J'essaie de ftp un dossier en utilisant le client ftp en ligne de commande, mais jusqu'à présent, je n'ai pu utiliser que "get" pour obtenir des fichiers individuels.
Vous pouvez vous fier à wget, qui gère généralement ftp get correctement (du moins dans ma propre expérience). Par exemple:
wget -r ftp://user:[email protected]/
Vous pouvez également utiliser -m
qui convient à la mise en miroir. Il est actuellement équivalent à -r -N -l inf
.
Si vous avez des caractères spéciaux dans les informations d'identification, vous pouvez spécifier les arguments --user
et --password
pour que cela fonctionne. Exemple avec une connexion personnalisée avec des caractères spécifiques:
wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/
EDIT Comme l'a souligné @asmaier, veillez à ce que même si -r
soit pour la récursion, il a un niveau maximum par défaut de 5:
-r --recursive Turn on recursive retrieving. -l depth --level=depth Specify recursion maximum depth level depth. The default maximum depth is 5.
Si vous ne voulez pas rater les sous-répertoires, utilisez plutôt l'option de mise en miroir, -m
:
-m --mirror Turn on options suitable for mirroring. This option turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP directory listings. It is currently equivalent to -r -N -l inf --no-remove-listing.
Juste pour compléter la réponse donnée par Thibaut Barrère.
J'ai utilisé
wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory
Notez la double barre oblique après le nom du serveur. Si je ne mets pas de barre oblique supplémentaire, le chemin est relatif au répertoire de base de l'utilisateur.
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
Si lftp
est installé sur votre ordinateur, utilisez mirror dir
. Et vous avez terminé. Voir le commentaire de Ciro ci-dessous si vous souhaitez télécharger un répertoire de manière récursive.
Si vous pouvez utiliser scp
au lieu de ftp
, l'option -r
le fera pour vous. Je voudrais vérifier si vous pouvez utiliser un mécanisme de transfert de fichier plus moderne que FTP.
Utilisez WGet à la place. Il supporte les protocoles HTTP et FTP.
wget -r ftp://mydomain.com/mystuff
Bonne chance!
référence: http://linux.about.com/od/commands/l/blcmdl1_wget.htm
Il y a 'ncftp' qui est disponible pour l'installation sous linux. Cela fonctionne sur le protocole FTP et peut être utilisé pour télécharger des fichiers et des dossiers de manière récursive. fonctionne sur linux. A été utilisé et fonctionne correctement pour le transfert récursif de dossiers/fichiers.
Vérifiez ce lien ... http://www.ncftp.com/
Si vous voulez vous en tenir à la ligne de commande FTP, vous devriez essayer NcFTP. Ensuite, vous pouvez utiliser get -R pour obtenir récursivement un dossier. Vous aurez également obtenir l'achèvement.
Si vous le pouvez, je vous suggère fortement de tar
et bzip
(ou gzip
, quel que soit le bateau flottant) le répertoire de la machine distante — pour un répertoire de taille importante, les économies de bande passante va probablement valoir le temps de compresser/décompresser.
wget -r ftp://url
Fonctionne parfaitement pour Redhat et Ubuntu
Vous ne devez pas utiliser ftp
. Comme telnet
, il n’utilise pas de protocoles sécurisés et les mots de passe sont transmis en texte clair. Cela permet aux tiers de saisir facilement votre nom d'utilisateur et votre mot de passe.
Pour copier des répertoires distants à distance, ces options sont meilleures:
rsync
est l'outil le mieux adapté si vous pouvez vous connecter via ssh
, car il ne copie que les différences et peut facilement redémarrer au milieu en cas de coupure de la connexion.
ssh -r
est la deuxième meilleure option pour copier de manière récursive les structures de répertoires.
Voir: