Lewati unduhan jika file ada di wget?


Jawaban:


269

Coba parameter berikut:

-nc, --no-clobber: lewati unduhan yang akan mengunduh ke file yang ada.

Penggunaan sampel:

wget -nc http://example.com/pic.png

34
-nctidak mencegah pengiriman permintaan HTTP dan pengunduhan file selanjutnya. Hanya tidak melakukan apa-apa setelah mengunduh file jika file tersebut telah sepenuhnya diambil. Apakah ada cara untuk mencegah membuat permintaan HTTP jika file sudah ada? stackoverflow.com/questions/33203898/…
ma11hew28

8
Seperti dicatat pada pertanyaan yang ditautkan, saya tidak setuju - Jika tidak ada clobber yang digunakan dan nama file itu ada, ia keluar. Bahkan tidak ada permintaan KEPALA. Bahkan jika ini bukan masalahnya, periksa apakah Anda memiliki file untuk memulai dengan :-)[ ! -e "$(basename $URL)" ] && wget $URL
plundra

3
Saya pikir saya mungkin mendapatkan hasil yang berbeda karena saya menggunakan --recursiveopsi.
ma11hew28

197

The -nc, --no-clobberpilihan adalah bukan solusi terbaik sebagai file baru tidak akan diunduh. Orang harus menggunakan -Nyang akan mengunduh dan menimpa file hanya jika server memiliki versi yang lebih baru, jadi jawaban yang benar adalah:

wget -N http://www.example.com/images/misc/pic.png

Kemudian menjalankan Wget dengan -N, dengan atau tanpa -ratau -p, keputusan untuk mengunduh salinan file yang lebih baru tergantung pada timestamp lokal dan jarak jauh serta ukuran file. -ncmungkin tidak ditentukan secara bersamaan dengan -N.

-N, --timestamping: Nyalakan pencetakan waktu.


39
Ketika server tidak dikonfigurasi dengan benar -Nmungkin gagal dan wget akan selalu mengunduh ulang. Jadi terkadang -ncsolusi yang lebih baik.
pengguna

2
skenario apa yang bisa diterapkan di mana 'Ketika server tidak dikonfigurasi dengan benar' akan terjadi?
AjayKumarBasuthkar

ketika Anda mengunduh dari lokasi yang disalin, mengubah semua cap waktu.
Robert

Apakah ini yang terbaik tergantung pada konteksnya. Sebagai contoh, saya mengunduh ~ 1600 file dari daftar, dan kemudian memperbarui daftar untuk memasukkan beberapa file lagi. File tidak berubah jadi saya tidak peduli dengan versi terbaru dan saya tidak ingin memeriksa server untuk versi baru dari 1600 file yang sudah saya miliki.
JBentley

2
@AjayKumarBasuthkar: Ketika server tidak mendukung cara apa pun untuk memeriksa file yang lebih baru, wgetakan mengeluh Last-modified header missing; ini persis situasi yang diuraikan.
Piskvor meninggalkan gedung

23

Saat menjalankan Wget dengan -ratau -p, tetapi tanpa -N,, -ndatau -ncmengunduh ulang file akan menghasilkan salinan baru hanya dengan menimpa yang lama.

Jadi menambahkan -ncakan mencegah perilaku ini, alih-alih menyebabkan versi asli dipertahankan dan salinan yang lebih baru di server diabaikan.

Lihat info lebih lanjut di GNU.


18

Jawaban yang saya cari adalah di https://unix.stackexchange.com/a/9557/114862 .

Menggunakan -cbendera ketika file lokal berukuran lebih besar atau sama dengan versi server akan menghindari mengunduh ulang.


1
Ini sangat bagus ketika Anda mengunduh banyak file dengan flag -i. wget -i filelist.txt -cakan melanjutkan pengunduhan daftar file yang gagal.
Trevor
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.