มีเครื่องมือที่มีอยู่ซึ่งสามารถใช้ดาวน์โหลดไฟล์ขนาดใหญ่ผ่านการเชื่อมต่อที่ไม่ดีได้หรือไม่?
ฉันต้องดาวน์โหลดไฟล์ที่ค่อนข้างเล็กเป็นประจำ: 300 MB แต่การเชื่อมต่อ TCP ที่ช้า (80-120 KBytes / วินาที) จะหยุดพักแบบสุ่มหลังจาก 10-120 วินาที (เป็นเครือข่ายของ บริษัท ใหญ่เราติดต่อผู้ดูแลระบบของพวกเขา (ทำงานจากอินเดีย) หลายครั้ง แต่พวกเขาไม่สามารถหรือไม่ต้องการทำอะไรเลย) ปัญหาอาจเกิดจากพร็อกซี / โหลดบาลานเซอร์ย้อนกลับของพวกเขา
จนถึงตอนนี้ฉันใช้ pcurl รุ่นที่แก้ไขแล้ว: https://github.com/brunoborges/pcurl
ฉันเปลี่ยนบรรทัดนี้:
curl -s --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
สำหรับสิ่งนี้:
curl -s --retry 9999 --retry-delay 3 --speed-limit 2048 --speed-time 10 \
--retry-max-time 0 -C - --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
ฉันต้องเพิ่ม--speed-limit 2048 --speed-time 10
เพราะการเชื่อมต่อส่วนใหญ่เพิ่งแฮงค์เป็นนาทีเมื่อมันล้มเหลว
แต่เมื่อเร็ว ๆ นี้แม้แต่สคริปต์นี้ก็ยังไม่สมบูรณ์
ปัญหาหนึ่งคือดูเหมือนว่าจะไม่สนใจ-C -
ส่วนดังนั้นจึงไม่ "ดำเนินการต่อ" ส่วนหลังจากลองอีกครั้ง ดูเหมือนว่าจะตัดทอนไฟล์ temp ที่เกี่ยวข้องและเริ่มจากจุดเริ่มต้นหลังจากแต่ละไฟล์ล้มเหลว (ฉันคิดว่า--range
และ-C
ตัวเลือกไม่สามารถใช้ร่วมกันได้)
ปัญหาอื่นคือสคริปต์นี้ดาวน์โหลดทุกส่วนในเวลาเดียวกัน ไม่สามารถมีกลุ่มได้ 300 กลุ่มโดยมีการดาวน์โหลดเพียง 10 ครั้งเท่านั้น
ฉันกำลังคิดที่จะเขียนเครื่องมือดาวน์โหลดใน C # สำหรับจุดประสงค์เฉพาะนี้ แต่ถ้ามีเครื่องมือที่มีอยู่หรือถ้าคำสั่ง curl สามารถทำงานได้อย่างถูกต้องกับพารามิเตอร์ที่แตกต่างกันฉันก็จะเสียเวลา
อัปเดต 1: ข้อมูลเพิ่มเติม: ไม่ควรลบฟังก์ชันการดาวน์โหลดแบบขนานเนื่องจากมีขีด จำกัด แบนด์วิดท์ (80-120 Kbytes / วินาทีโดยส่วนใหญ่ 80) ต่อการเชื่อมต่อดังนั้นการเชื่อมต่อ 10 ครั้งอาจทำให้ความเร็วเพิ่มขึ้น 10 เท่า ฉันต้องดาวน์โหลดไฟล์ให้เสร็จใน 1 ชั่วโมงเพราะไฟล์จะถูกสร้างขึ้นทุกชั่วโมง
rsync
(ซึ่งจะช่วยให้คุณเริ่มการถ่ายโอน)?lftp
ยังช่วยให้การรีสตาร์ทการส่งสัญญาณโดยอัตโนมัติ