นี่คือตัวอย่างที่ง่ายที่สุดที่ใช้ wget:
wget http://www.example.com/images/misc/pic.png
แต่วิธีการดาวน์โหลด wget ข้ามถ้าpic.png
มีอยู่แล้ว?
นี่คือตัวอย่างที่ง่ายที่สุดที่ใช้ wget:
wget http://www.example.com/images/misc/pic.png
แต่วิธีการดาวน์โหลด wget ข้ามถ้าpic.png
มีอยู่แล้ว?
คำตอบ:
ลองพารามิเตอร์ต่อไปนี้:
-nc
,--no-clobber
: ข้ามการดาวน์โหลดที่จะดาวน์โหลดไปยังไฟล์ที่มีอยู่
ตัวอย่างการใช้งาน:
wget -nc http://example.com/pic.png
[ ! -e "$(basename $URL)" ] && wget $URL
--recursive
ตัวเลือก
-nc
, --no-clobber
ตัวเลือกไม่ได้เป็นทางออกที่ดีที่สุดเป็นไฟล์ใหม่จะไม่ถูกดาวน์โหลด หนึ่งควรใช้-N
แทนซึ่งจะดาวน์โหลดและเขียนทับไฟล์เฉพาะในกรณีที่เซิร์ฟเวอร์มีรุ่นที่ใหม่กว่าดังนั้นคำตอบที่ถูกต้องคือ:
wget -N http://www.example.com/images/misc/pic.png
จากนั้นวิ่ง Wget กับ -N มีหรือไม่มี
-r
หรือ-p
การตัดสินใจที่เป็นไปได้หรือไม่ที่จะดาวน์โหลดสำเนาของไฟล์ใหม่ขึ้นอยู่กับการประทับเวลาท้องถิ่นและระยะไกลและขนาดของไฟล์ อาจจะไม่ได้ระบุไว้ในเวลาเดียวกันเป็น-nc
-N
-N
,--timestamping
: เปิดการประทับเวลา
-N
อาจล้มเหลวและ wget จะทำการดาวน์โหลดซ้ำเสมอ ดังนั้นบางครั้งก็-nc
เป็นทางออกที่ดีกว่า
wget
จะบ่นLast-modified header missing
; นี่เป็นสถานการณ์ที่สรุปไว้อย่างแน่นอน
เมื่อใช้ Wget ด้วย-r
หรือ-p
แต่ไม่-N
, -nd
หรือ-nc
อีกครั้งดาวน์โหลดไฟล์จะส่งผลในสำเนาใหม่เพียงเขียนทับเก่า
ดังนั้นการเพิ่ม-nc
จะป้องกันพฤติกรรมนี้แทนที่จะทำให้เวอร์ชันดั้งเดิมถูกเก็บรักษาไว้และการทำสำเนาที่ใหม่กว่าบนเซิร์ฟเวอร์จะถูกละเว้น
คำตอบที่ผมกำลังมองหาที่https://unix.stackexchange.com/a/9557/114862
การใช้
-c
แฟล็กเมื่อไฟล์โลคัลมีขนาดใหญ่กว่าหรือเท่ากับรุ่นของเซิร์ฟเวอร์จะหลีกเลี่ยงการดาวน์โหลดซ้ำ
wget -i filelist.txt -c
จะทำการดาวน์โหลดรายการไฟล์ที่ล้มเหลวต่อ
-nc
ไม่ป้องกันการส่งคำขอ HTTP และการดาวน์โหลดไฟล์ในภายหลัง มันไม่ได้ทำอะไรหลังจากดาวน์โหลดไฟล์หากไฟล์นั้นได้รับการดึงข้อมูลเรียบร้อยแล้ว มีวิธีป้องกันการร้องขอ HTTP หรือไม่หากไฟล์มีอยู่แล้ว? stackoverflow.com/questions/33203898/…