envoyer un dossier via ftp
#1

Bonjour,

J'ai mis un petit serveur ftp en place et arrive à me connecter localement.

Je cherche une commande pour transférer ma musicothèque, donc un dossier (d'environ 30Gio) avec de multiples sous-dossiers et fichiers, en excluant au passage les fichiers jpg pour éviter que ceux-ci n'apparaissent dans la galerie.
Je suis encore débutant en shell.

La commande serait quelque chose du genre :
Code :
cp -R Musicothèque | find -name *.jpg -exec rm {} \; | echo "send `$0` `$0`" | ftp ftp://login:pass@ip:port
Qui peut m'aider à trouver la bonne syntaxe ?
Répondre
#2

bonjour.

déjà pourquoi utiliser ftp au lieu de préférer sftp (par ssh) ?!
ensuite des solutions éprouvées par rsync, sshfs, voire lftp serait certainement préférable, non ?!
(il est vrai que ces solutions demandent l'installation de paquets en plus de la base)

avec rsync+ssh, tu aurais une solution de type, à minima :

Code :
$ cd Musicothèque
$ rsync -av --exclude="*.jpg" -e "ssh -p 22" "." $login@$ip:$dir_distant

ce n'est qu'un exemple des possibles.

Pour lftp, qui est un puissant outil, tu as un exemple là :
- https://serverfault.com/questions/24622/...4833#24833

PS : Perso, je suis d'avis qu'il faut éviter autant que possible FTP, trafic en clair, pas sécurisé pour deux sous, ni trois… et, préférez SFTP. Ou, au pire, faire du FTPS. Mais c'est ce compliqué encore plus la vie. :p

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#3

On ne peut pas transférer de répertoire avec ftp, mais des programmes comme lftp (si je me souviens bien) permettent de créer le répertoire et faire une copie récursive de tout son contenu.

Sinon on peut utiliser https://rclone.org/ et configurer un serveur FTP en destination, rclone permet ensuite de faire des trucs comme

rclone --filter *jpg copy ~/Musique/ serveur_ftp:Musique/

(faut vérifier la syntaxe du paramètre filter mais globalement ça permet de faire ce genre de chose)
Répondre
#4

Pour lister, plus rapide que find, locate(1)
Code :
locate ~/Music |grep -v '\.jpg$'
Pour transporter, si c'est sur un réseau de confiance,
tar(1) et nc(1) avec les bonnes options.
Sur la machine qui reçoit c'est dans l'autre sens.
Exemple à adapter (pour OpenBSD un peu plus bas dans la page) :
https://tarpipe.be/

Pas de paquet à installer.

Edit :
locate pioche dans une base de donnée,
si il y a eu des changements dans ~/Music depuis
la construction de cette base par weekly(8),
il ne seront pas pris en compte.
Répondre
#5

En effet c'est mieux de privilégier sftp. C'est tout fait faisable également avec l'application que j'utilise :
https://f-droid.org/en/packages/org.primftpd/

Et pour sûr je préfère ajouter le moins possible à -base... je me suis donc dirigé vers lftp.

Le transfert est en cours. Il semble que cela fonctionne avec :
Code :
$ lftp
lftp :~> open sftp://sylvain:[[pass]]@firefly:[[port]]
lftp sylvain@firefly:/> mirror -x `*.jpg$` -F Musicoth\303\250que/ -R
Répondre
#6

ehehh, vive lftp ; outil très pratique en effet, et là, tu utilises l'option de synchronisation mirroir des données (exactement comme l'usage de rsync) :p

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#7

Ça ne marche pas avec ma Firefly (pour le moment Wink ) car Android ne dispose pas de la commande (pax(1)), mais je vous laisse quand même l'exemple/message de quelqu'un d'autre sur le canal Telegram The CLI-way :

Citation :
Code :
ssh user@domain "printf 'dir' | pax -w " | pax -r

Use it instead of scp. Pax standardized [1] by IEEE, and scp deprecated by lwn[2] users.

[1] https://man.bsd.lv/pax.1#STANDARDS
[2] https://lwn.net/Articles/835962/

EDIT : je rajoute également cette application plus minimaliste que primftpd, qui fait serveur ssh ainsi que sftp
https://f-droid.org/en/packages/org.galexander.sshd/
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)