Cara mengizinkan wget untuk menimpa file

9

Menggunakan wgetperintah, bagaimana saya mengizinkan / menginstruksikan untuk menimpa file lokal saya setiap kali, terlepas dari berapa kali saya memohon.

Katakanlah, saya ingin mengunduh file dari lokasi: http: //server/folder/file1.html

Di sini, setiap kali saya mengatakan wget http://server/folder/file1.html, saya ingin ini file1.htmlditimpa dalam sistem lokal saya terlepas dari waktu itu diubah, sudah diunduh, dll. Niat saya / kasus penggunaan di sini adalah bahwa ketika saya menelepon wget, saya sangat yakin bahwa saya ingin untuk mengganti / menimpa file yang ada.

Saya sudah mencoba opsi berikut, tetapi setiap opsi dimaksudkan / dimaksudkan untuk tujuan lain.

  1. -nc => --no-clobber
  2. -N => Nyalakan pencetakan waktu
  3. -r => Aktifkan pengambilan rekursif
Gnanam
sumber

Jawaban:

7
wget -q http://www.whatever.com/filename.txt -O /path/filename.txt 

-q adalah mode diam sehingga Anda dapat membuangnya di cron tanpa output dari perintah

aleroot
sumber
Tidak ada opsi langsung dalam wgetperintah yang melakukan ini tanpa saya tentukan secara eksplisit menggunakan -O filename?
Gnanam
3
Tampaknya tidak ada cara untuk memaksa menimpa setiap file saat mengunduh file menggunakan wget. Namun, gunakan opsi -N pasti dapat memaksa mengunduh dan menimpa file yang lebih baru. wget -N Akan menimpa file asli jika ukuran atau stempel waktu berubah
aleroot
Tidak benar. arahkan output dari perintah ke stdout dan pipa ke file: wget -q $ urlYouNeedToGrap> $ fileYouWantToOverwriteEverytime
rasjani
8

Opsi ini berfungsi

wget -N http://server/folder/file1.html

info

-N,  --timestamping            don't re-retrieve files unless newer than
                               local.
Steven Penny
sumber
4

Gunakan curlsebagai gantinya?

curl http://server/folder/file1.html > file1.html
Stu Thompson
sumber
Saya bukan ahli Linux. Apa perbedaan mendasar antara wgetdan curl? Saya yakin bahwa setiap perintah dimaksudkan untuk tujuan tertentu.
Gnanam
1
@ Gnanam: Mereka tumpang tindih banyak dalam utilitas dasar CLI, sebenarnya. Keduanya dapat membuat koneksi HTTP dan menyimpan hasilnya ke disk. Untuk mengetahui perbedaannya, periksa daniel.haxx.se/docs/curl-vs-wget.html Apapun, penggunaan di atas sepenuhnya valid. Ada alat-alat lain dalam area umum ini juga: curl.haxx.se/docs/comparison-table.html
Stu Thompson
2 tautan itu sangat membantu untuk memahami perbedaannya.
Gnanam
0

Saya tidak berpikir Anda bisa melakukannya kecuali jika Anda juga mengunduh direktori (jadi berikan flag -x). Jika Anda tahu apa file itu, Anda bisa menggunakan -O nama file, jadi misalnya:
wget http://yourdomain.com/index.html -O index.html

James L.
sumber
0

Belum dicoba: mungkin Anda bisa bekerja dengannya wget -r --level=0.

Kemungkinan lain: curl -Omenimpa (tetapi menggunakan cara berbeda dalam memilih nama file, yang mungkin atau mungkin tidak penting bagi Anda).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Itu wgetgaris tidak benar-benar melakukan hal yang benar karena ia menciptakan hirarki subdirektori. curl -Odi sisi lain mengunduh file dengan benar, menimpa salinan yang ada.
sth
0

Mengapa tidak meletakkan pembungkus kecil di sekitar wget di skrip Anda?

Script bisa memindahkan semua file ke lokasi sementara, lalu wget file jarak jauh / halaman web.

Berhasil menghapus file di lokasi sementara. Pada kegagalan, pindahkan file kembali dan meningkatkan kesalahan.

Tidak ada cara sederhana untuk melakukan apa yang Anda inginkan hanya dengan menggunakan wget kecuali Anda tahu secara spesifik nama semua file, dalam hal ini opsi -O akan memungkinkan Anda untuk memaksa nama file dari file yang diunduh.

Richard Holloway
sumber