ฉันจะกระจายการดาวน์โหลดขนาดใหญ่ผ่านคอมพิวเตอร์หลายเครื่องได้อย่างไร


38

ฉันต้องดาวน์โหลดไฟล์ขนาดใหญ่ (1GB) ฉันยังสามารถเข้าถึงคอมพิวเตอร์หลายเครื่องที่ใช้ Linux แต่แต่ละเครื่องถูก จำกัด ความเร็วในการดาวน์โหลด 50kB / s โดยนโยบายการดูแลระบบ

ฉันจะกระจายการดาวน์โหลดไฟล์นี้ในคอมพิวเตอร์หลายเครื่องและรวมไฟล์เหล่านั้นหลังจากดาวน์โหลดกลุ่มทั้งหมดเพื่อให้ฉันสามารถรับได้เร็วขึ้น


7
ดาวน์โหลดที่บ้านและแอบเข้าไปใน usb thumbdrive?
WernerCD

2
ฉันจำสิ่งนี้ได้ด้วยสถานีรับแดดเก่าเมื่อฉันอยู่ที่มหาวิทยาลัย เพียงตรวจสอบว่าคุณมีพื้นที่เพียงพอที่จะบันทึกเนื้อหาทั้งหมดหรือไม่เพื่อนคนหนึ่งของฉันถูกไล่ออกจากโรงเรียนหลังจากบล็อกคอมพิวเตอร์ทุกเครื่องในแล็บ (full tmp)
Kartoch

หากไม่มีข้อ จำกัด ในการดาวน์โหลดปลายอื่น ๆ สามารถส่งไฟล์ได้เร็วแค่ไหน? มีข้อ จำกัด การโอนระหว่างคอมพิวเตอร์บน LAN หรือไม่
อาทิตย์

@SunWKim ไม่ได้มีข้อ จำกัด เฉพาะที่นั่น
Meysam

คำตอบ:


60

โปรโตคอลทั่วไป HTTP, FTP และ SFTP รองรับการร้องขอช่วงดังนั้นคุณสามารถขอเป็นส่วนหนึ่งของไฟล์ โปรดทราบว่าสิ่งนี้ยังต้องการการสนับสนุนเซิร์ฟเวอร์ดังนั้นจึงอาจใช้งานได้จริง

คุณสามารถใช้curlและตัวเลือก-rหรือ--rangeเพื่อระบุช่วงและท้ายที่สุดก็แค่catการรวมไฟล์เข้าด้วยกัน ตัวอย่าง:

curl -r 0-104857600         -o distro1.iso 'http://files.cdn/distro.iso'
curl -r 104857601-209715200 -o distro2.iso 'http://files.cdn/distro.iso'
[…]

และในที่สุดเมื่อคุณรวบรวมชิ้นส่วนแต่ละชิ้นที่คุณต่อกัน:

cat distro* > distro.iso

คุณสามารถรับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์รวมถึงขนาดไฟล์ด้วย--headตัวเลือก:

curl --head 'http://files.cdn/distro.iso'

คุณสามารถดึงก้อนสุดท้ายด้วยช่วงเปิด:

curl -r 604887601- -o distro9.iso 'http://files.cdn/distro.iso'

อ่านหน้าคำแนะนำเพิ่มเติมสำหรับตัวเลือกและคำอธิบายเพิ่มเติม

คุณสามารถใช้ประโยชน์จาก ssh และ tmux เพื่อความสะดวกในการเรียกใช้และติดตามการดาวน์โหลดบนเซิร์ฟเวอร์หลายเครื่อง


15
หมายเหตุ: ระวังเมื่อใช้การcat distro* > ...ตรวจสอบการเรียงลำดับของไฟล์ที่ส่วน*ขยายโดยเชลล์ของคุณสามารถเรียงลำดับได้เช่นนี้: distro1.iso distro10.iso distro11.iso ...และทำการเรียงลำดับผิดลำดับ
เซบาสเตียน

8
การแก้ไขบันทึกย่อของ @ Sebastian จะเป็น:cat distro{1..10}.iso
nonchip

1
วิธีการแก้ปัญหานั้นเฉพาะเจาะจงและไม่พกพาได้ cat $(seq -fdist%g.iso 1 10)ควรจะคาดการณ์มากขึ้น แต่ก็ล้มเหลวในการcshแต่ การแทนที่$(…)ด้วย backtics ดูเหมือนว่าจะทำงานในเปลือกหอยส่วนใหญ่
Marco

3
@Marco seqไม่ใช่คำสั่งแบบพกพาเช่นกัน คุณสามารถใช้distro001.iso, distro002.iso...distroy010.iso
Stéphane Chazelas

เป็นนโยบายของผู้ดูแลระบบคือ 50 kB / s ต่อการถ่ายโอนการเชื่อมต่อหรือแบนด์วิดท์ทั้งหมดที่ได้รับอนุญาตบนคอมพิวเตอร์ ถ้าเป็นคำตอบเดิมสามารถใช้คำตอบบนคอมพิวเตอร์เครื่องเดียวกันแทนที่จะต้องล็อกอินเข้าสู่เวิร์กสเตชันที่แตกต่างกัน
อาทิตย์

0

จะใช้เวลาประมาณ 5.5 ชั่วโมงในการขี่ไฟล์ 1 กิกะไบต์ที่ 50 กิโลไบท์ต่อวินาที

ดูเหมือนว่าความพยายามในการประสานงานคอมพิวเตอร์หลายเครื่องเพื่อให้ได้งานบรรจุภัณฑ์อาจประหยัดเวลา

คุณสามารถดู BitTorrent และใช้การเพาะเว็บพร้อมกับการโอนผ่านการแลกเปลี่ยนกับเพื่อน ลูกค้าแต่ละรายสามารถรับชิ้นส่วนและแบ่งปันชิ้นส่วนที่เสร็จสมบูรณ์ด้วยในเครือข่ายท้องถิ่น (LAN) คุณจบลงด้วยไฟล์ 1GB เดียวกันบนคอมพิวเตอร์แต่ละเครื่อง แต่การรวมกันของชิ้นต่างๆเป็นไปโดยอัตโนมัติสำหรับคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.