Como faço para baixar pastas através do FTP no Terminal?

12

Como faço para baixar uma pasta inteira por FTP no Terminal?

daviesgeek
fonte

Respostas:

9

mgeté o mais próximo que você pode chegar com o binário FTP incluído. Você precisa mkdir e cd / lcd e, em seguida, obter todos os arquivos que correspondam a um padrão como*

A promptalternância pode ser útil.

O FTP funciona em um diretório, não em diretórios como contêineres de arquivos. Se você realmente tivesse que fazer o trabalho e o ftp fosse a única ferramenta que poderia usar - você poderia expectcriar um script para gerar o ftp para você.

Felizmente, existem alternativas como scp| rsync| wgetpara obter diretórios inteiros com arquivos.

bmike
fonte
Ok ... então o ponto principal é que não consigo baixar uma pasta inteira de uma só vez; Eu tenho que baixar os arquivos individuais, certo?
Daviesgeek
Sim. Todo mundo não estaria mostrando wget, sftp, scp e rsync se o ftp estivesse à altura da tarefa.
Bmike
Obrigado ... o SFTP permite o download de pastas?
Daviesgeek
Opa (desculpe) - não. sftp é a mesma sintaxe e limitações do ftp - apenas protege a conexão usando ssh em vez de autenticação ftp.
bmike
Se você estiver vinculado ao protocolo FTP, poderá usar o lftp para fazer um download recursivo de uma árvore de diretórios. Solução da velha escola para esse problema.
Ian C.
7

Outra maneira é usar curl

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

Eu acho que isso está funcionando, ou arquivo por arquivo

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

Espero que isso tenha ajudado.

noktec
fonte
OK, muito obrigado, mas existe uma maneira via FTP de fazer isso?
Daviesgeek
Impressionante! Eu não tinha conhecimento da propensão de FTP do curl. Obrigado!
Bmike
Sim ... eu também não. Provavelmente vou usá-lo com mais frequência.
Daviesgeek
2
Eu estou tentando sua sugestão, mas obtendo o seguinte:curl: (78) RETR response: 550
Omer
1
curlabsolutamente não pode lidar com isso. wgetposso.
Ken Sharp
3

Use scp (documentação) ou sftp (documentação)

scp -r login@myserverip:/remote/directory/path/ mylocaldirectory
ghoppe
fonte
Não é isso que estou perguntando. Minha pergunta é: Como faço para baixar uma pasta via FTP no Terminal? Em outras palavras, quais comandos no FTP eu uso para baixar uma pasta?
Daviesgeek
2
sftp é muito superior ao FTP +1
bmike
1
@ bmike: sim, mas os servidores ftp mais antigos podem não suportar sftp.
PLL
3

Eu tive que baixar mais de 22.000 fotos da webcam do meu servidor da web, o que é um desafio para o Finder e para o meu programa FTP CyberDuck.

Então, fiz o seguinte (com base na resposta do @ 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

Em seguida, os arquivos estão sendo baixados na pasta desejada:

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
fonte
3

estou usando

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

Infelizmente wget, não suporta downloads paralelos.

oussama fahd
fonte
0

siga estas instruções:

tipo

ftp

então você está no ftp parecendo

ftp>

então você abre ip do servidor

ftp> open xx.xxx.xxx.xx

então ele pedirá o nome de usuário, você fornecerá

Name:(your ftp server): your_username

então ele solicitará a senha

Password:  your_password

então você deve estar logado e ver o ftp> shell novamente, você pode digitar "ls" para listar todos os arquivos e navegar como no inix com cd

quando você encontrou seu nome de arquivo, você pode baixá-lo com

ftp> get filename

et voila, o arquivo será baixado para o diretório em que você abriu o shell localmente

você não pode baixar diretórios, mas pode navegar no seu diretório e baixar vários, por exemplo, todos os arquivos

Tarefa: Baixar vários arquivos

Você precisa usar o comando mget da seguinte maneira para copiar vários arquivos do servidor ftp remoto para o sistema local. Você pode ser solicitado a responder sim / não (S / N) antes de transferir cada arquivo (você pode desativar o prompt passando a opção -i para o cliente ftp). Para baixar todos os arquivos, digite: ftp> mget *

informações de http://www.cyberciti.biz/faq/linux-unix-ftp-commands/ felicidades

john Smith
fonte
A ferramenta ftp unix foi removida do OS X (na Sierra, eu acho?).
precisa saber é