J'essaie de ftp un dossier en utilisant le client ftp en ligne de commande, mais jusqu'à présent, je n'ai pu utiliser 'get' que pour obtenir des fichiers individuels.
J'essaie de ftp un dossier en utilisant le client ftp en ligne de commande, mais jusqu'à présent, je n'ai pu utiliser 'get' que pour obtenir des fichiers individuels.
Réponses:
Vous pouvez compter sur wget qui gère généralement ftp correctement (du moins d'après ma propre expérience). Par exemple:
wget -r ftp://user:pass@server.com/
Vous pouvez également utiliser -m
ce qui convient à la mise en miroir. Il est actuellement équivalent à -r -N -l inf
.
Si vous avez des caractères spéciaux dans les détails des informations d'identification, vous pouvez spécifier les arguments --user
et --password
pour le faire fonctionner. Exemple avec 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, attention, même si -r
c'est pour la récursivité, il a un niveau max 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 mieux 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.
wget -m
( --mirror
). wget -r
est limité à une profondeur de récursivité de 5 par défaut.
--user
et --password
aussi sur Red Hat. Mon wget est: GNU Wget 1.11.4 Red Hat modified
je me demande s'il s'agit d'une version ou d'une distribution ...
-l 0
, donc pas besoin d'utiliser --mirror
ce qui peut avoir des effets secondaires indésirables tels que les fichiers
wget --ask-password -rl 99 ftp://user@server.com
. De cette façon, le mot de passe n'est pas visible avec ps
et ne reste pas dans l'historique. Bien sûr, par la nature de ftp, il est envoyé non chiffré au serveur.
$
), par exemple--user='user' --password='pa$$word'
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 vous ne mettez pas de barre oblique supplémentaire, le chemin est relatif au répertoire personnel 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 juste ignoré) --cut-dirs=5
permet de prendre le contenu de / absolu / chemin / vers / répertoire et de le mettre dans le répertoire où vous lancez wget. Le chiffre 5 est utilisé pour filtrer les 5 composants du chemin. La double barre oblique signifie un composant supplémentaire.--ftp-user=USER
et --ask-password
.
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
open ftp://USERNAME:PASSWORD@HOST
après le démarrage de ncftp…
wget
, et plus rapide aussi en mode TAR. Merci!
Si lftp
est installé sur votre machine, utilisez mirror dir
. Et vous avez terminé. Voir le commentaire de Ciro ci-dessous si vous souhaitez télécharger récursivement un répertoire.
mirror -R dir
télécharge / met à jour le répertoire récursif
mirror ./
pour télécharger tous les fichiers et dossiers récursivement dans le chemin actuel.
mirror
, pour le répertoire actuel et ses sous-dossiers.
Si vous pouvez utiliser scp
au lieu de ftp
, l' -r
option le fera pour vous. Je vérifierais si vous pouvez utiliser un mécanisme de transfert de fichiers plus moderne que FTP.
scp
tentera toujours d'utiliser ssh, qui ne fonctionnera pas si vous ne disposez que des informations d'identification FTP. Ça fait bizarre de répondre à un commentaire de 2008 disant que la technologie avec laquelle je suis coincé n'est pas moderne :( Bon vieux 2008, j'ai eu 18 ans le jour où vous avez posté votre commentaire.
Utilisez plutôt WGet. Il prend en charge 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 bien 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 tar
et bzip
(ou gzip
, quoi que flotte votre bateau) le répertoire sur la machine distante - pour un répertoire de n'importe quelle taille significative, les économies de bande passante valent probablement le temps de compresser / décompresser.
Vous ne devez pas utiliser ftp
. Comme telnet
s'il n'utilisait pas de protocoles sécurisés, et les mots de passe sont transmis en texte clair. Cela permet aux tiers de saisir très 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 plus 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 rupture de la connexion.
ssh -r
est la deuxième meilleure option pour copier récursivement les structures de répertoires.
Voir:
basculer l'invite par la commande PROMPT.
Usage:
ftp>cd /to/directory
ftp>prompt
ftp>mget *
mget
, ce n'est pas du tout récursif. la réponse du 22 septembre 2008 à 9h01 Thibaut Barrère est plus facile à comprendre mais doit ajouter l'option-l 0
comme mentionné dans les commentaires