Comment télécharger des dossiers via FTP dans Terminal?

12

Comment télécharger un dossier entier via FTP dans Terminal?

daviesgeek
la source

Réponses:

9

mgetest le plus proche que vous pouvez obtenir avec le binaire FTP inclus. Vous devez mkdir et cd / lcd puis obtenir tous les fichiers qui correspondent à un modèle comme*

La promptbascule peut être utile.

FTP fonctionne dans un répertoire, pas sur des répertoires comme conteneurs de fichiers. Si vous deviez absolument faire le travail et que ftp était le seul outil que vous pouviez utiliser - vous pourriez concocter un expectscript pour piloter ftp pour vous.

Heureusement, il existe des alternatives comme scp| rsync| wgetpour obtenir des répertoires entiers d'une valeur de fichiers.

bmike
la source
Ok ... donc l'essentiel est que je ne peux pas télécharger un dossier entier à la fois; Je dois télécharger les fichiers individuels, non?
daviesgeek
Ouaip. Tout le monde ne montrerait pas wget, sftp, scp et rsync si ftp était à la hauteur.
bmike
Merci ... SFTP permet-il le téléchargement de dossiers?
daviesgeek
Oups (désolé) - non. sftp a la même syntaxe et les mêmes limites que ftp - il suffit de sécuriser la connexion en utilisant ssh au lieu de l'authentification ftp.
bmike
Si vous êtes lié au protocole FTP, vous pouvez utiliser lftp pour effectuer un téléchargement récursif d'une arborescence de répertoires. Solution old school à ce problème.
Ian C.
7

Une autre façon consiste à utiliser curl

curl ftp://ftp.com/mp3/* --user login:password -o /myfolder/*

Je pense que cela fonctionne, ou fichier par fichier

curl ftp://ftp.com/mp3/mymusic.zip --user login:password -o mymusic.zip

J'espère que cela a aidé.

noktec
la source
OK, merci beaucoup, mais existe-t-il un moyen via FTP de le faire?
daviesgeek
Impressionnant! Je n'étais pas au courant de la propension FTP de curl. Merci!
bmike
Ouais ... moi non plus. Je vais probablement l'utiliser plus souvent.
daviesgeek
2
J'essaie votre suggestion mais j'obtiens ceci:curl: (78) RETR response: 550
Omer
1
curlne peut absolument pas gérer cela. wgetpouvez.
Ken Sharp
3

Utilisation scp (documentation) ou sftp (documentation)

scp -r login@myserverip:/remote/directory/path/ mylocaldirectory
ghoppe
la source
Ce n'est pas ce que je demande. Ma question est: comment télécharger un dossier via FTP dans Terminal? En d'autres termes, quelles commandes en FTP dois-je utiliser pour télécharger un dossier?
daviesgeek
2
sftp est de loin supérieur à FTP +1
bmike
1
@bmike: oui, mais les serveurs ftp plus anciens peuvent ne pas prendre en charge sftp.
PLL
3

J'ai dû télécharger plus de 22'000 photos de webcam depuis mon serveur Web, ce qui est un peu difficile pour le Finder et mon programme FTP CyberDuck.

J'ai donc fait ce qui suit (basé sur la réponse de @ bmike):

mkdir ~/Desktop/image-dump-myserver
ftp ftp://myuser@myserver.com
# enter password

# You're now in the ftp console (where the world is still okay)

# Set the local folder
lcd ~/Desktop/image-dump-myserver

# cd into the desired folder (`ls`, `pwd` etc. all work here)
cd /httpdocs/images

# Toggle the interactive mode
prompt

# Download the desired files (all the images in my case)
mget *.jpg

Ensuite, les fichiers sont téléchargés dans le dossier souhaité:

local: image1433509292_1582.jpg remote: image1433509292_1582.jpg  
229 Entering Extended Passive Mode (|||50001|)  
150 Opening BINARY mode data connection for image1433509292_1582.jpg (63626 bytes)  
100% |***********************************| 63626        1.51 MiB/s    00:00 ETA  
226 Transfer complete  
63626 bytes received in 00:00 (0.98 MiB/s)  

local: image1427279963_0841.jpg remote: image1427279963_0841.jpg  
229 Entering Extended Passive Mode (|||50053|)  
150 Opening BINARY mode data connection for image1427279963_0841.jpg (67194 bytes)  
100% |***********************************| 67194        1.64 MiB/s    00:00 ETA  
226 Transfer complete  
67194 bytes received in 00:00 (1.04 MiB/s) 

local: image1439798493_1783.jpg remote: image1439798493_1783.jpg  
229 Entering Extended Passive Mode (|||50357|)  
150 Opening BINARY mode data connection for image1439798493_1783.jpg (48876 bytes)  
100% |***********************************| 48876        1.80 MiB/s    00:00 ETA  
226 Transfer complete  
48876 bytes received in 00:00 (996.81 KiB/s)  
....  
Besi
la source
3

j'utilise

wget -r -l 10 --ftp-user='FTP_USER' --ftp-password='FTP_PASSWORD' \
    ftp://ftp.server.com/folder_to_download/*

Malheureusement, wgetne prend pas en charge les téléchargements parallèles.

oussama fahd
la source
0

suivez cette instruction:

type

ftp

alors vous êtes en ftp ressemblant

ftp>

alors vous ouvrez l'IP du serveur

ftp> open xx.xxx.xxx.xx

alors il vous demandera un nom d'utilisateur, vous fournirez

Name:(your ftp server): your_username

alors il demandera un mot de passe

Password:  your_password

alors vous devriez être connecté et voir à nouveau le shell ftp>, vous pouvez taper "ls" pour lister tous les fichiers et vous pouvez naviguer comme dans inix avec cd

lorsque vous avez trouvé votre nom de fichier, vous pouvez le télécharger avec

ftp> get filename

et le tour est joué, le fichier sera téléchargé dans le répertoire que vous avez ouvert

vous ne pouvez pas télécharger les répertoires, mais vous pouvez naviguer dans votre répertoire et télécharger plusieurs, par exemple tous les fichiers

Tâche: télécharger plusieurs fichiers

Vous devez utiliser la commande mget comme suit pour copier plusieurs fichiers du serveur ftp distant vers le système local. Vous pouvez être invité à répondre par oui / non (O / N) avant de transférer chaque fichier (vous pouvez désactiver l'invite en passant l'option -i au client ftp). Pour télécharger tous les fichiers, entrez: ftp> mget *

informations de http://www.cyberciti.biz/faq/linux-unix-ftp-commands/ cheers

John Smith
la source
L'outil ftp unix a été supprimé d'OS X (dans Sierra, je pense?).
benwiggy