Câu trả lời:
Cách phổ biến nhất để xác minh tính toàn vẹn của các tệp đã tải xuống là sử dụng tổng kiểm MD5. Điều này giả định rằng trang web bạn đang tải xuống từ tổng kiểm MD5 thực sự được xuất bản của các tệp của họ. Bạn có thể xác minh tổng kiểm tra MD5 bằng cách tạo tổng kiểm tra của riêng bạn về tệp đã tải xuống và so sánh nó với tổng kiểm tra đã xuất bản. Nếu chúng giống hệt nhau, tập tin bạn đã tải xuống hoàn tất và không bị giả mạo.
Nếu bạn không mong đợi tệp bạn đang tải xuống thay đổi, bạn có thể tính toán tổng kiểm tra và mã cứng vào tập lệnh, nhưng nếu tệp được cập nhật, xác minh sẽ thất bại.
Để tạo tổng kiểm MD5 của một tệp chạy md5sum myFile
. Trong trường hợp wget, bạn có thể thấy lệnh này hữu ích, đặc biệt nếu tệp bạn đang tải xuống lớn:
wget -O - http://example.com/myFile | tee myFile | md5sum > MD5SUM
.
Điều này sẽ tạo ra một tổng kiểm tra "myFile" trong khi tải xuống và lưu nó vào tệp MD5SUM, có thể giúp bạn tiết kiệm thời gian.
Trong trường hợp kết nối bị rớt, tôi nghĩ cách tốt nhất là kiểm tra mã thoát của wget. Nếu quá trình tải xuống thành công mà không có bất kỳ lỗi nào, wget sẽ quay trở lại 0
. Bất cứ điều gì khác chỉ ra một cái gì đó đã đi sai. Hãy xem phần "Thoát trạng thái" của man wget
.
Mã trả về của lệnh được sử dụng để tải xuống tệp sẽ cho bạn biết nếu lệnh được thực hiện thành công hay không. Thông thường, mã trả về 0 biểu thị thành công và bất kỳ số nào khác không biểu thị một lỗi. Bạn có thể truy cập mã trả về thông qua $?
biến.
Một ví dụ cơ bản sử dụng wget
sẽ đi:
#!/bin/bash
wget foo.tgz &> /dev/null
if [[ "$?" != 0 ]]; then
echo "Error downloading file"
else
echo "Success"
fi
&> /dev/null
chuyển hướng tất cả đầu ra của wget để /dev/null
lý tưởng cho việc tạo kịch bản NHƯNG điều đó làm cho việc sửa wget
lỗi trở nên khó khăn hơn.
wget -q ... || { handle ; error ; }
man
khi đọc qua để trả lời và hai điều tôi sẽ nói đã ở đây trong hai câu trả lời - vì vậy tôi đã thực hiện hai bình luận. Liên lạc tốt đẹp với bạn, quá.
wget
có thể nghĩ rằng quá trình tải xuống đã hoàn tất, ngay cả khi nó bị hỏng . Proxy thông tin về các kết nối TCP bị hỏng so với các kết nối TCP bị đóng có vấn đề với HTTP do nó sử dụng TCP đóng làm dấu kết thúc theo mặc định. Đó là lý do tại sao tôi đã thêm một kiểm tra nếu kích thước tệp từ tiêu đề phù hợp với kích thước tệp được tải xuống khi tôi chạy tải xuống hàng loạt. Không chắc chắn nếu wget
kiểm tra tính nhất quán như vậy hoặc thông số http nói gì về vấn đề này.