Jak mogę pobierać foldery przez FTP w terminalu?

Odpowiedzi:

9

mgetjest najbliższy dostępnemu plikowi binarnemu FTP. Musisz mkdir i cd / lcd, a następnie pobrać wszystkie pliki niż pasujące do wzorca*

promptPrzełącznik może się przydać.

FTP działa w obrębie katalogu, a nie w katalogach jako kontenerach plików. Jeśli absolutnie musiałeś wykonać zadanie, a ftp było jedynym narzędziem, którego możesz użyć - możesz skompletować expectskrypt, aby uruchomić ftp za ciebie.

Na szczęście istnieją alternatywy takie jak scp| rsync| wgetaby uzyskać pliki o wartości katalogów całych.

bmike
źródło
Ok ... więc najważniejsze jest to, że nie mogę pobrać całego folderu jednocześnie; Muszę pobrać poszczególne pliki, prawda?
daviesgeek
Tak. Wszyscy nie pokazaliby wget, sftp, scp i rsync, gdyby ftp sprostało zadaniu.
bmike
Dzięki ... czy SFTP pozwala na pobieranie folderów?
daviesgeek
Ups (przepraszam) - nie. sftp to ta sama składnia i ograniczenia ftp - po prostu zabezpieczanie połączenia za pomocą ssh zamiast uwierzytelniania ftp.
bmike
Jeśli jesteś związany protokołem FTP, możesz użyć lftp do rekurencyjnego pobierania drzewa katalogów. Old schoolowe rozwiązanie tego problemu.
Ian C.
7

Innym sposobem jest użycie curl

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

Myślę, że to działa lub plik po pliku

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

Mam nadzieję, że to pomogło.

noktec
źródło
OK, dziękuję bardzo, ale czy można to zrobić za pośrednictwem FTP?
daviesgeek
Niesamowite! Nie byłem świadomy skłonności curla do FTP. Dzięki!
bmike
Tak ... ja też nie. Prawdopodobnie użyję tego częściej.
daviesgeek
2
Wypróbowuję twoją sugestię, ale dostaję to:curl: (78) RETR response: 550
Omer
1
curlabsolutnie nie mogę sobie z tym poradzić. wgetmogą.
Ken Sharp
3

Użyj scp (dokumentacja) lub sftp (dokumentacja)

scp -r login@myserverip:/remote/directory/path/ mylocaldirectory
ghoppe
źródło
Nie o to pytam. Moje pytanie brzmi: jak pobrać folder przez FTP w terminalu? Innymi słowy, jakich poleceń na FTP używam do pobierania folderu?
daviesgeek
2
sftp jest znacznie lepszy od FTP +1
bmike
1
@bike: tak, ale starsze serwery ftp mogą nie obsługiwać sftp.
PLL,
3

Musiałem pobrać ponad 22 000 zdjęć z kamery internetowej z mojego serwera, co jest wyzwaniem zarówno dla Findera, jak i mojego programu FTP CyberDuck.

Zrobiłem więc następujące (na podstawie odpowiedzi @ 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

Następnie pliki są pobierane do żądanego folderu:

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
źródło
3

ja używam

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

Niestety wgetnie obsługuje pobierania równoległego.

oussama fahd
źródło
0

postępuj zgodnie z tą instrukcją:

rodzaj

ftp

to wyglądasz jak ftp

ftp>

następnie otworzysz ip serwera

ftp> open xx.xxx.xxx.xx

wtedy poprosi o nazwę użytkownika, podasz

Name:(your ftp server): your_username

wtedy poprosi o hasło

Password:  your_password

wtedy powinieneś być zalogowany i ponownie zobaczyć powłokę ftp>, możesz wpisać „ls”, aby wyświetlić listę wszystkich plików, i możesz nawigować jak w inix z cd

kiedy znajdziesz swoją nazwę pliku, możesz ją pobrać

ftp> get filename

i voila, plik zostanie pobrany do katalogu, z którego lokalnie otworzyłeś powłokę

nie możesz pobrać katalogów, ale możesz przejść do swojego katalogu i pobrać wiele np. wszystkich plików

Zadanie: pobierz wiele plików

Aby skopiować wiele plików ze zdalnego serwera ftp do systemu lokalnego, należy użyć polecenia mget w następujący sposób. Możesz zostać poproszony o odpowiedź tak / nie (T / N) przed przesłaniem każdego pliku (możesz wyłączyć monit, przekazując opcję -i do klienta ftp). Aby pobrać wszystkie pliki, wpisz: ftp> mget *

informacje z http://www.cyberciti.biz/faq/linux-unix-ftp-commands/ cheers

John Smith
źródło
Narzędzie ftp unix zostało usunięte z OS X (jak sądzę w Sierra?).
benwiggy