Saya sedang menulis skrip yang melibatkan mengunduh dan memanipulasi file, dan saya ingin memastikan bahwa file tersebut tidak lengkap (karena misalnya koneksi terputus) sebelum saya mengerjakannya.
Cara paling umum untuk memverifikasi integritas file yang diunduh adalah dengan menggunakan checksum MD5. Ini mengasumsikan bahwa situs yang Anda unduh dari checksum MD5 yang sebenarnya diterbitkan dari file mereka. Anda dapat memverifikasi MD5 checksum dengan membuat sendiri checksum dari file yang diunduh dan membandingkannya dengan checksum yang diterbitkan. Jika mereka identik, file yang Anda unduh sudah selesai dan tidak dirusak.
Jika Anda tidak mengharapkan file yang sedang Anda unduh berubah, Anda dapat melakukan precum pada checksum dan memasukkannya ke dalam skrip, tetapi jika file diperbarui, verifikasi akan gagal.
Untuk membuat checksum MD5 dari suatu file yang dijalankan md5sum myFile
. Dalam kasus wget Anda mungkin menganggap perintah ini bermanfaat, terutama jika file yang Anda unduh berukuran besar:
wget -O - http://example.com/myFile | tee myFile | md5sum > MD5SUM
.
Ini akan membuat checksum "myFile" saat mengunduh dan menyimpannya ke file MD5SUM, mungkin menghemat waktu Anda.
Dalam kasus koneksi terputus saya pikir cara terbaik adalah dengan memeriksa kode keluar dari wget. Jika unduhan berhasil tanpa kesalahan, wget akan kembali 0
. Ada lagi yang menunjukkan ada kesalahan. Lihatlah bagian "Status Keluar" dari man wget
.
Kode kembali dari perintah yang digunakan untuk mengunduh file akan memberi tahu Anda apakah perintah tersebut berhasil atau tidak. Biasanya, kode pengembalian 0 menunjukkan keberhasilan dan angka bukan nol menunjukkan kesalahan. Anda dapat mengakses kode kembali melalui
$?
variabel.Contoh dasar menggunakan
wget
akan muncul:&> /dev/null
mengarahkan ulang semua output wget ke/dev/null
sehingga ideal untuk scripting TAPI itu membuatwget
kesalahan debug lebih sulit.sumber
wget -q ... || { handle ; error ; }
man
ketika membaca untuk menjawab dan dua hal yang akan saya katakan sudah ada di sini dalam dua jawaban - jadi saya melakukan dua komentar. Sentuhan yang bagus untukmu juga.wget
mungkin berpikir unduhan itu selesai, bahkan jika itu rusak. Proksi informasi tentang koneksi TCP terputus vs. koneksi TCP tertutup yang bermasalah dengan HTTP karena menggunakan TCP tertutup sebagai tanda akhir secara default. Itu sebabnya saya menambahkan tanda centang apakah ukuran file dari header cocok dengan ukuran file yang diunduh ketika saya menjalankan unduhan massal. Tidak yakin apakahwget
konsistensi seperti itu memeriksa atau apa yang dikatakan spek http tentang masalah ini.