Pertanyaan Menggunakan wget untuk secara rekursif mengunduh seluruh direktori FTP


Saya ingin menyalin semua file dan folder dari satu host ke yang lain. File-file di host lama duduk di / var / www / html dan saya hanya memiliki akses FTP ke server itu, dan saya tidak bisa TAR semua file. Koneksi reguler ke host lama melalui FTP membawa saya ke folder / home / admin.

Saya mencoba menjalankan perintah berikut membentuk server baru saya:

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

Tetapi yang saya dapatkan hanyalah file index.html yang dibuat.

Apa sintaks yang benar untuk menggunakan wget secara rekursif melalui FTP?


87
2018-06-13 09:21




Perhatikan bahwa, secara default, wget -r memiliki kedalaman rekursif maksimum 5; jika Anda memiliki subdirektori yang lebih dalam, mereka akan diabaikan kecuali Anda mengubahnya (lihat -l di halaman manual). - mikewaters


Jawaban:


Mencoba -m untuk --mirror

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

119
2018-06-13 10:04



Untuk alasan keamanan, itu akan baik digunakan --ask-password untuk menghindari kata sandi disimpan history. - checksum
Ini sangat keren. Bekerja seperti pesona .. - Sambhav Sharma
Ini harus menjadi jawaban yang diterima (untuk visibilitas yang lebih baik). - bgondy
itu tidak termasuk jalur direktori untuk diunduh, saya kira jawaban @Formoda lebih baik - Wasim A.


Anda benar, Anda hanya perlu mengikuti * di bagian akhir:

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

Untuk server bersama, Anda dapat menggunakan seperti ini:

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

Karena sebagian besar server bersama memiliki ftp-nama pengguna seperti nama pengguna @ hostname, jadi, perintah wget pertama tidak berfungsi, dan perintah kedua berfungsi dengan baik.


36
2018-06-22 12:35



Ini hanya akan pergi satu direktori dalam. Lebih baik untuk menggunakan bendera -m - SvennD
dalam beberapa kasus perintah kedua tidak berfungsi karena ruang, Anda dapat menggunakan perintah pertama untuk berbagi hosting seperti ini. ** wget -r ftp: / / username% 40host: kata sandi @ host / dir / ** - Wasim A.
Catatan: Anda harus menggunakan keduanya -m atau -r -l inf karena -r memiliki kedalaman rekursif default 5. Lihat gnu.org/software/wget/manual/… - ndemou


Selain wget, Anda juga bisa menggunakannya lftp dalam mode skrip. Perintah berikut akan mencerminkan konten dari direktori FTP jauh yang diberikan ke direktori lokal yang diberikan, dan itu dapat dimasukkan ke dalam tugas cron:

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

Ini secara otomatis menangani rekursi ke dalam direktori dan memungkinkan menentukan direktori mulai sumber dari awal untuk mengunduh data dari.


6
2018-06-13 18:04





Anda dapat menggunakan 'curlftpfs - mount ftp host sebagai direktori lokal' dan, setelah di-mount, Anda dapat menggunakan alat file normal seperti 'cp -r'.


5
2018-06-13 21:22



curlftpfs memiliki masalah kinerja utama sekarang kecuali Anda menurunkan versi libcurl3-gnutls - Hengjie


Periksa perintah wget di bawah untuk mengunduh data dari FTP secara rekursif.

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

-r: Apakah untuk unduhan rekursif.

-np: Apakah tidak ada orang tua yang naik.

-nH: Apakah untuk menonaktifkan pembuatan direktori memiliki nama yang sama dengan URL yaitu abc.xyz.com

--cut-dirs: Apakah untuk mengabaikan jumlah direktori induk. Nilai opsi ini akan berbeda untuk perintah Anda.

Anda dapat memeriksa dengan menjalankan perintah di atas.


4
2017-07-24 04:48





Gunakan -m bukan -r, karena kedalaman rekursi.

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


3
2018-06-17 11:56





Harus berusaha mencoba:

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

2
2018-06-13 09:54





Menggunakan:

wget -m ftp://192.168.0.1

dan itu akan mencerminkan semua file dan folder.


2
2018-06-13 14:07



Seperti yang saya katakan, login melalui FTP membawa saya ke folder / home / admin, dan file yang saya perlukan ada di / var / www / html Jadi ketika saya menjalankan perintah yang Anda sarankan, saya hanya mendapatkan isi dari / home / admin Saya mencoba menjalankannya 192.168.0.1/var/www/html, tetapi kemudian mencoba ke CWD / home / admin / var / www / html. Bagaimana cara membuatnya pergi ke folder ini dari root?
Saya tidak memiliki pengalaman dengan masalah khusus ini, tetapi Anda dapat mencoba membuat symlink ke / var / www / html di bawah rumah Anda. Maka Anda bisa menggunakan alamat seperti 192.168.0.1/html - prestomation
Saya mencoba membuat symlink, tetapi menghasilkan wget yang membuat symlink serupa di lokal saya.


Itu sintaks yang benar. Tidak yakin mengapa Anda tidak mendapatkan hasil yang diharapkan.

Seperti biasa ada lebih dari satu cara untuk melakukannya. Cobalah ncftp, khususnya ncftpget


1
2018-06-13 09:27



Saya tidak dapat menginstal lebih banyak perangkat lunak di server baru saya. Bukankah seharusnya saya mengatakan wget untuk mengunduh semua file dari / var / www / html? Saya mencoba wget -r nama pengguna: password@ip.of.old.host/var/www/html tapi saya mendapat direktori tidak ditemukan kesalahan.


Saya bisa mengerti jika Anda mencoba untuk memasukkan ini ke cron atau sesuatu, tetapi mengapa tidak cukup ftp ke server dengan klien normal Anda dan mget *? Ini mungkin jalan yang lebih cepat menuju sukses.


1
2018-06-13 13:37



Saya mencoba mget * tetapi tidak berfungsi dengan sub-folder, mengatakan sub-folder lokal tidak ada. Apakah ada cara untuk membuatnya membuat folder lokal secara otomatis?
Tergantung pada klien Anda, tombol -r biasanya melakukan trik. IE: mget -r * - dr.pooter
mmm. Klien ftp AFAIK standar di linux tidak dirancang untuk mengambil direktori secara rekursif. Maksud saya - tidak ada opsi -r. klien lain seperti ncftp atau lftp support recursive retrieval tetapi biasanya tidak tersedia secara default. - Stann


Seperti yang saya katakan, masuk melalui FTP   membawa saya ke folder / home / admin,   dan file yang saya butuhkan ada di dalamnya   / var / www / html

Saya pikir ini akan bekerja dalam kasus Anda:

wget -r ftp://192.168.0.1/../../var/www/html

1
2018-06-21 21:25