Vraag Gebruik maken van wget om recursief hele FTP-mappen te downloaden


Ik wil alle bestanden en mappen van de ene naar de andere host kopiëren. De bestanden op de oude host zitten op / var / www / html en ik heb alleen FTP-toegang tot die server en ik kan niet alle bestanden tarren. Regelmatige verbinding met de oude host via FTP brengt me naar de map / home / admin.

Ik heb geprobeerd het volgende opdrachtformulier van mijn nieuwe server uit te voeren:

wget -r ftp://username:password@ip.of.old.host

Maar ik krijg alleen een samengesteld index.html-bestand.

Wat is de juiste syntaxis voor het recursief gebruiken van Wget via FTP?


87
2018-06-13 09:21


oorsprong


Merk op dat wget -r standaard een maximale recursie-diepte van 5 heeft; als je een diepere submappen hebt, worden deze genegeerd tenzij je dit verandert (zie -l op de man-pagina). - mikewaters


antwoorden:


Proberen -m voor --mirror

wget -m ftp://username:password@ip.of.old.host

119
2018-06-13 10:04



Om veiligheidsredenen zou het goed zijn om te gebruiken --ask-password om te voorkomen dat het wachtwoord wordt bewaard history. - checksum
Dit is zo cool. Werkte als een charme .. - Sambhav Sharma
Dit zou het geaccepteerde antwoord moeten zijn (voor betere zichtbaarheid). - bgondy
het bevat pad van map om te downloaden, ik denk dat @Formoda antwoord beter is - Wasim A.


Je hebt het goed, je hebt alleen een trailing * nodig aan het einde:

wget -r ftp://username:password@1.2.3.4/dir/*

Voor gedeelde servers kunt u dit als volgt gebruiken:

wget -r ftp://1.2.3.4/dir/* --ftp-user=username --ftp-password=password

Omdat de meeste gedeelde servers de ftp-gebruikersnaam hebben, bijvoorbeeld gebruikersnaam @ hostnaam, werkt de eerste wget-opdracht niet en werkt de tweede opdracht prima.


36
2018-06-22 12:35



Dit zou slechts één map diep gaan. Plaats de -m vlag om te gebruiken - SvennD
in sommige gevallen werkt de tweede opdracht niet vanwege de ruimte. U kunt de eerste opdracht gebruiken voor het hosten van een share zoals deze. ** wget -r ftp: / / gebruikersnaam% 40host: wachtwoord @ host / dir / ** - Wasim A.
Opmerking: u moet een van beide gebruiken -m of -r -l inf omdat -r een standaard recursiediepte van 5 heeft. Zie gnu.org/software/wget/manual/... - ndemou


Naast wget, mag je ook gebruiken lftp in scriptmodus. Met de volgende opdracht wordt de inhoud van een bepaalde externe FTP-directory in de opgegeven lokale map gespiegeld en kan deze in de cron-taak worden geplaatst:

lftp -c 'open <hostname>; user <username> <password>; mirror -e <remote-src-path> <local-dest-path>; quit'

Het behandelt automatisch de recursie in mappen en maakt het mogelijk om de bron startdirectory op afstand op te geven om gegevens van te downloaden.


6
2018-06-13 18:04





Je kunt 'curlftpfs - mount a ftp host as a local directory' gebruiken en eenmaal aangekoppeld, kun je normale bestandstools gebruiken zoals 'cp -r'.


5
2018-06-13 21:22



curlftpfs heeft momenteel grote prestatieproblemen tenzij je downgrade libcurl3-gnutls - Hengjie


Controleer de onderstaande wget-opdracht om recursief gegevens van FTP te downloaden.

wget --user="<user-name>" --password="<password>" -r -np -nH --cut-dirs=1 --reject "index.html*" "<URL to download files>"

-r: Is voor recursief downloaden.

-np: Is voor geen ouder oplopend.

-nH: Is voor het uitschakelen van het aanmaken van een map met dezelfde naam als URL, d.w.z. abc.xyz.com

--cut-dirs: Is voor het negeren van het aantal bovenliggende mappen. De waarde van deze optie verschilt voor uw opdracht.

U kunt controleren door het bovenstaande commando uit te voeren.


4
2017-07-24 04:48





Gebruik -m in plaats van -r, vanwege de recursiediepte.

http://www.editcorp.com/Personal/Lars_Appel/wget/wget_2.html#SEC11


3
2018-06-17 11:56





Zou het moeten proberen:

wget -r ftp://ftp:ftp@ftp.sunet.se/tst/

2
2018-06-13 09:54