GNU/Linux >> Znalost Linux >  >> Linux

Jak rekurzivně stáhnout složku přes FTP na Linuxu

ncftp -u <user> -p <pass> <server>
ncftp> mget directory

Jen pro doplnění odpovědi Thibauta Barrèra.

Použil jsem

wget -r -nH --cut-dirs=5 -nc ftp://user:[email protected]//absolute/path/to/directory

Všimněte si dvojitého lomítka za názvem serveru. Pokud nevložíte lomítko navíc, cesta je relativní k domovskému adresáři uživatele.

  • -nH zabrání vytvoření adresáře pojmenovaného podle názvu serveru
  • -nc zabrání vytvoření nového souboru, pokud již v cíli existuje (je pouze přeskočen)
  • --cut-dirs=5 umožňuje vzít obsah /absolute/cesta/k/adresáři a vložit jej do adresáře, kde spustíte wget. Číslo 5 se používá k odfiltrování 5 složek cesty. Dvojité lomítko znamená další komponent.

Můžete se spolehnout na wget, který obvykle zpracovává ftp get správně (alespoň podle mé vlastní zkušenosti). Například:

wget -r ftp://user:[email protected]/

Můžete také použít -m který je vhodný pro zrcadlení. Aktuálně je ekvivalentní -r -N -l inf .

Pokud máte v podrobnostech pověření nějaké speciální znaky, můžete zadat --user a --password argumenty, aby to fungovalo. Příklad s vlastním přihlášením se specifickými znaky:

wget -r --user="[email protected]" --password="Pa$$wo|^D" ftp://server.com/

Jak zdůraznil @asmaier, dávejte si pozor, i když -r je pro rekurzi, má výchozí maximální úroveň 5:

-r
--recursive
    Turn on recursive retrieving.

-l depth
--level=depth
    Specify recursion maximum depth level depth.  The default maximum depth is 5.

Pokud nechcete přijít o podadresáře, použijte raději možnost zrcadlení -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.

Pokud lftp je na vašem počítači nainstalován, použijte mirror dir . A máte hotovo. Pokud chcete rekurzivně stáhnout adresář, podívejte se na komentář Ciro níže.


Linux
  1. Jak otevírat a zavírat adresáře v terminálu Linux

  2. Jak nahrávat nebo stahovat soubory/adresáře pomocí sFTP v Linuxu

  3. Jak odstranit adresář a složku v Linuxu?

  1. Jak najít soubor v Linuxu ve všech adresářích rekurzivně

  2. Jak přejmenovat adresář v Linuxu

  3. Jak získat velikost adresáře v Linuxu

  1. Jak používat Wget k rekurzivnímu stahování souborů z webového adresáře?

  2. Jak gzipovat adresář v Linuxu

  3. Jak mohu rekurzivně stáhnout adresář pomocí smbclient?