Đây là ví dụ đơn giản nhất khi chạy wget:
wget http://www.example.com/images/misc/pic.png
Nhưng làm thế nào để làm cho wget bỏ qua tải xuống nếu pic.png
đã có sẵn?
Đây là ví dụ đơn giản nhất khi chạy wget:
wget http://www.example.com/images/misc/pic.png
Nhưng làm thế nào để làm cho wget bỏ qua tải xuống nếu pic.png
đã có sẵn?
Câu trả lời:
Hãy thử tham số sau:
-nc
,--no-clobber
: bỏ qua các tải xuống sẽ tải xuống các tệp hiện có.
Sử dụng mẫu:
wget -nc http://example.com/pic.png
[ ! -e "$(basename $URL)" ] && wget $URL
--recursive
tùy chọn.
Các -nc
, --no-clobber
lựa chọn không phải là giải pháp tốt nhất là tập tin mới sẽ không được tải. Người ta nên sử dụng -N
thay vì sẽ tải xuống và ghi đè lên tệp chỉ khi máy chủ có phiên bản mới hơn, vì vậy câu trả lời đúng là:
wget -N http://www.example.com/images/misc/pic.png
Sau đó, chạy Wget với -N, có hoặc không
-r
hoặc-p
quyết định về việc có tải xuống bản sao mới hơn của tệp hay không phụ thuộc vào dấu thời gian cục bộ và từ xa và kích thước của tệp.-nc
có thể không được chỉ định cùng lúc với-N
.
-N
,--timestamping
: Bật thời gian dập.
-N
có thể bị lỗi và wget sẽ luôn tải lại. Vì vậy, đôi khi -nc
là giải pháp tốt hơn.
wget
sẽ khiếu nại Last-modified header missing
; đây chính xác là tình huống đã vạch ra.
Khi chạy Wget với -r
hoặc -p
, nhưng không -N
, -nd
hoặc -nc
, tải xuống lại một tệp sẽ dẫn đến bản sao mới chỉ đơn giản là ghi đè lên bản cũ.
Vì vậy, việc thêm -nc
sẽ ngăn hành vi này, thay vào đó làm cho phiên bản gốc được giữ nguyên và mọi bản sao mới hơn trên máy chủ sẽ bị bỏ qua.
Câu trả lời tôi đang tìm kiếm là tại https://unix.stackexchange.com/a/9557/114862 .
Sử dụng
-c
cờ khi tệp cục bộ có kích thước lớn hơn hoặc bằng với phiên bản máy chủ sẽ tránh tải xuống lại.
wget -i filelist.txt -c
sẽ tiếp tục tải xuống thất bại của một danh sách các tập tin.
-nc
không ngăn chặn việc gửi yêu cầu HTTP và tải xuống tệp sau đó. Nó chỉ không làm gì sau khi tải xuống tệp nếu tệp đã được truy xuất đầy đủ. Có cách nào để ngăn chặn việc thực hiện yêu cầu HTTP nếu tệp đã tồn tại không? stackoverflow.com/questions/33203898/