Mencoba kembali melanjutkan pengunduhan dengan curl

17

Saya menggunakan mac dan memiliki daftar file yang ingin saya unduh dari server ftp. Koneksi agak buggy jadi saya ingin mencoba lagi dan melanjutkan jika koneksi terputus.

Saya tahu saya bisa melakukan ini dengan wget, tetapi sayangnya Mac OS X tidak datang dengan wget. Saya dapat menginstalnya, tetapi untuk melakukan itu (kecuali saya telah melewatkan sesuatu) saya perlu menginstal XCode dan MacPorts terlebih dahulu, yang ingin saya hindari.

Curl tersedia meskipun tampaknya, tapi saya tidak tahu cara kerjanya atau bagaimana cara menggunakannya. Jika saya memiliki daftar file dalam file teks (satu jalur penuh per baris, seperti ftp: // user: pass @ server / dir / file1 ) bagaimana saya bisa menggunakan curl untuk mengunduh semua file itu? Dan bisakah saya mengeriting agar tidak menyerah? Suka, coba lagi secara tak terbatas dan lanjutkan unduhan di tempat yang ditinggalkannya dan semacamnya?

Svish
sumber

Jawaban:

20

Setelah googling dan pria membaca dan semacamnya untuk sementara waktu saya telah menemukan solusi yang bekerja untuk saya:

curl ftp://server/dir/file[01-30].ext --user user:pass -O --retry 999 --retry-max-time 0 -C -
  • [01-30] akan membuatnya mengunduh 30 file bernama file01.ext, file02.ext dan sebagainya
  • --user user:pass harus jelas
  • -O untuk output ke file dengan nama asli
  • --retry 999 untuk mencoba lagi 999 kali
  • --retry-max-time 0untuk mencegah dari waktu keluar retrys. Perilaku default jika Anda tidak menentukan penundaan - retry tetap adalah tidur pertama satu detik di antara percobaan ulang, lalu menggandakannya, hingga mencapai 10 menit. di antara percobaan ulang
  • -C -untuk membuatnya melanjutkan di mana ia jatuh (jika Anda menjalankan perintah lagi). Tanda hubung kemudian memberi tahu untuk mencari tahu dari mana harus melanjutkan

Jika seseorang tahu cara mendapatkan nama file dari file, tolong beri tahu saya.


Di halaman manual dikatakan sebagai berikut:

--url <URL>
Tentukan URL yang akan diambil. Opsi ini sebagian besar berguna ketika Anda ingin menentukan URL dalam file konfigurasi.

Sepertinya itu bisa menjadi sesuatu, tapi tidak mengerti bagaimana itu akan digunakan ...

Svish
sumber
2

Anda dapat menggunakan opsi -K untuk menggulung untuk menentukan file konfigurasi. Dalam hal ini, Anda menggunakan sintaks:

optionname=<value>

Jika Anda memiliki file yang berisi daftar URL, Anda dapat menggunakan curl seperti ini:

sed 's/\(.*\)/-O\nurl=\1/g' url_list.txt | curl -K -

yang mengubah daftar url, seperti:

http://host1.com/foo.html
http://host2.com/bar.html

ke dalam format seperti ini:

-O
url=http://host1.com/foo.html
-O
url=http://host2.com/bar.html

Curl membacanya dan menafsirkan masing-masing opsi seperti itu.

HTH,

Adam

ahawtho
sumber