Comment télécharger récursivement un dossier via FTP sur Linux [fermé]
-
02-07-2019 - |
Question
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.
La solution
Vous pouvez vous fier à wget, qui gère généralement ftp get correctement (du moins de mon expérience). Par exemple:
wget -r ftp://user:pass@server.com/
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 - utilisateur
et - mot de passe
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/
MODIFIER
Comme l'a souligné @asmaier, veillez à ce que même si -r
est destiné à la récursion, son niveau maximal par défaut est 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.
Autres conseils
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.
- -nH évite la création d'un répertoire nommé d'après le nom du serveur
- -nc évite de créer un nouveau fichier s'il existe déjà sur la destination (il est simplement ignoré)
- - cut-dirs = 5 me permet de prendre le contenu du répertoire / absolute / path / to / et de le placer dans le répertoire où je lance wget. Le nombre 5 est utilisé pour filtrer les 5 composantes du chemin. La double barre oblique signifie un composant supplémentaire.
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
Si lftp
est installé sur votre ordinateur, utilisez miroir 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 peut être installé 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 le pouvez, je vous suggère fortement de tar
et bzip
(ou gzip
, quel que soit le comportement de votre bateau), le répertoire de la machine distante & # 8212; pour un répertoire de toute taille importante, les économies de bande passante vont probablement valoir le temps nécessaire pour décompresser / décompresser.
Si vous souhaitez vous en tenir à la ligne de commande FTP, vous devez essayer NcFTP. Ensuite, vous pouvez utiliser get -R pour obtenir récursivement un dossier. Vous obtiendrez également l'achèvement.
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 préférables:
-
rsync
est l'outil le mieux adapté si vous pouvez vous connecter viassh
, car il ne copie que les différences et peut facilement redémarrer au milieu en cas la connexion est interrompue. -
ssh -r
est la deuxième meilleure option pour copier de manière récursive les structures de répertoires.
Voir:
bascule l'invite par la commande PROMPT.
Utilisation:
ftp>cd /to/directory
ftp>prompt
ftp>mget *