pengembangan-web-mp-pd.com

Menggunakan wget untuk mengunduh seluruh direktori FTP secara rekursif

Saya ingin menyalin semua file dan folder dari satu Host ke yang lain. File-file pada 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 dari server baru saya:

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

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

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

97
user9406

Coba -m untuk --mirror

wget -m ftp://username:[email protected]
129
Dave Cheney

Anda benar, Anda hanya perlu * di akhir:

wget -r ftp://username:[email protected]/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-username sesuatu seperti nama pengguna @ hostname, jadi, perintah wget pertama tidak berfungsi, dan perintah kedua berfungsi dengan baik.

39
Formoda

Selain wget, Anda juga dapat menggunakan lftp dalam mode skrip. Perintah berikut akan mencerminkan konten direktori FTP jarak 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'

Secara otomatis menangani rekursi ke direktori dan memungkinkan menentukan direktori awal sumber jarak jauh dari untuk mengunduh data.

7
zappan

Periksa perintah wget di bawah ini 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 mengunduh secara rekursif.

-np: Apakah tidak ada orang tua yang naik.

-nH: Apakah untuk menonaktifkan pembuatan direktori yang namanya 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.

5
AVJ

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

5
chmeee

Gunakan -m daripada -r, karena kedalaman rekursi.

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

3
Bojan Hrnkas

Harus berhasil coba:

wget -r ftp://ftp:[email protected]/tst/
2
rkthkr

Menggunakan:

wget -m ftp://192.168.0.1

dan itu akan mencerminkan semua file dan folder.

2
Rajat

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

Saya pikir ini akan berhasil dalam kasus Anda:

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

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

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

1
goo

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

1
dr.pooter

Saya menemukan hosting Windows dengan nama pengguna sebagai brinkster/nama pengguna, jadi wget akan membuat kesalahan jika Anda menggunakan sintaks:

wget -m ftp://brinkster/username:[email protected]

Untuk melewati ini, gunakan

wget -m ftp://brinkster%2Fusername:[email protected]

Saya harus menghadapi ini dengan Windows hosting @ Brinkster.

0
Anto Joseph