Próbuję pobrać folder ftp za pomocą klienta ftp z wiersza poleceń, ale do tej pory mogłem używać tylko polecenia „get”, aby uzyskać pojedyncze pliki.
Próbuję pobrać folder ftp za pomocą klienta ftp z wiersza poleceń, ale do tej pory mogłem używać tylko polecenia „get”, aby uzyskać pojedyncze pliki.
Odpowiedzi:
Możesz polegać na wget, który zwykle odpowiednio obsługuje ftp (przynajmniej z własnego doświadczenia). Na przykład:
wget -r ftp://user:pass@server.com/
Możesz także użyć -m
odpowiedniego do tworzenia kopii lustrzanych. Obecnie jest to równoważne z-r -N -l inf
.
Jeśli masz jakieś znaki specjalne w szczegółach poświadczeń, możesz podać argumenty --user
i --password
argumenty, aby to zadziałało. Przykład niestandardowego logowania z określonymi znakami:
wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/
EDYCJA
Jak wskazał @asmaier, uważaj, że nawet jeśli -r
dotyczy rekurencji, ma domyślny maksymalny poziom 5:
-r --recursive Turn on recursive retrieving. -l depth --level=depth Specify recursion maximum depth level depth. The default maximum depth is 5.
Jeśli nie chcesz przegapić podkatalogów, lepiej skorzystaj z opcji dublowania -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
domyślnie jest ograniczona do głębokości rekurencji wynoszącej 5.
--user
i --password
na Red Hat. Mój wget brzmi: GNU Wget 1.11.4 Red Hat modified
zastanawiam się, czy to jest wersja, czy dystrybucja ...
-l 0
, więc nie ma potrzeby używania tego, --mirror
co może mieć niepożądane skutki uboczne, takie jak pliki .listing
wget --ask-password -rl 99 ftp://user@server.com
. W ten sposób hasło nie jest widoczne ps
i nie pozostaje w historii. Oczywiście z natury ftp jest wysyłany niezaszyfrowany na serwer.
$
), np.--user='user' --password='pa$$word'
Tylko w celu uzupełnienia odpowiedzi udzielonej przez Thibaut Barrère.
użyłem
wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory
Zwróć uwagę na podwójny ukośnik po nazwie serwera. Jeśli nie wstawię dodatkowego ukośnika, ścieżka jest względna do katalogu domowego użytkownika.
--ftp-user=USER
i --ask-password
.
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
open ftp://USERNAME:PASSWORD@HOST
po uruchomieniu ncftp…
wget
i szybszy również w trybie TAR. Dzięki!
Jeśli lftp
jest zainstalowany na twoim komputerze, użyj mirror dir
. I gotowe. Zobacz komentarz Ciro poniżej, jeśli chcesz rekurencyjnie pobrać katalog.
mirror -R dir
czy rekursywne przesyłanie / aktualizacja katalogu
mirror ./
do pobrania wszystkich plików i folderów rekurencyjnie w bieżącej ścieżce.
mirror
, dla bieżącego katalogu i jego podfolderów.
Jeśli możesz użyć scp
zamiast ftp
, -r
opcja zrobi to za Ciebie. Sprawdziłbym, czy możesz użyć bardziej nowoczesnego mechanizmu przesyłania plików niż FTP.
scp
nadal będzie próbował użyć ssh, co nie będzie działać, jeśli masz tylko poświadczenia FTP. Czuje się dziwnie reaguje na komentarz z 2008 roku mówią technologię utknąłem ze nie jest nowoczesny :( Dobry stary 2008, zwróciłem się w dniu 18 ty pisał komentarz.
Zamiast tego użyj WGet. Obsługuje protokoły HTTP i FTP.
wget -r ftp://mydomain.com/mystuff
Powodzenia!
odniesienie: http://linux.about.com/od/commands/l/blcmdl1_wget.htm
Istnieje „ncftp”, który można zainstalować w systemie Linux. Działa na protokole FTP i może służyć do rekurencyjnego pobierania plików i folderów. działa na systemie Linux. Został użyty i działa dobrze w przypadku rekurencyjnego przesyłania folderów / plików.
Sprawdź ten link ... http://www.ncftp.com/
Jeśli możesz, zdecydowanie zalecam ci tar
i bzip
(lub gzip
cokolwiek, co płynie twoją łodzią) katalog na zdalnej maszynie - w przypadku katalogu o znacznych rozmiarach, oszczędność przepustowości prawdopodobnie będzie warta czasu na skompresowanie / rozpakowanie.
Nie powinieneś używać ftp
. Jakby telnet
nie korzystał z bezpiecznych protokołów, a hasła są przesyłane czystym tekstem. Dzięki temu osoby trzecie mogą bardzo łatwo przechwycić nazwę użytkownika i hasło.
Aby skopiować zdalne katalogi zdalnie, te opcje są lepsze:
rsync
jest najlepszym narzędziem, jeśli można się zalogować ssh
, ponieważ kopiuje tylko różnice i może łatwo zrestartować się w środku w przypadku zerwania połączenia.
ssh -r
jest drugą najlepszą opcją do rekurencyjnego kopiowania struktur katalogów.
Widzieć:
strona podręcznika rsync
strona podręcznika ssh
przełączać monit za pomocą polecenia PROMPT.
Stosowanie:
ftp>cd /to/directory
ftp>prompt
ftp>mget *
mget
, to wcale nie jest rekurencyjne. odpowiedź z 22 września 08 o 9:01 Thibaut Barrère jest łatwiejszy do zrozumienia, ale musi dodać opcję,-l 0
jak wspomniano w komentarzach