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.

Était-ce utile?

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 via ssh , 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  *
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top