การลองทำซ้ำการดาวน์โหลดต่ออย่างต่อเนื่องด้วย curl


17

ฉันใช้ mac และมีรายการไฟล์ที่ฉันต้องการดาวน์โหลดจากเซิร์ฟเวอร์ ftp การเชื่อมต่อเป็นบิตรถดังนั้นฉันต้องการให้ลองใหม่และดำเนินการต่อหากการเชื่อมต่อหลุด

ฉันรู้ว่าฉันสามารถทำได้ด้วย wget แต่น่าเสียดายที่ Mac OS X ไม่ได้มาพร้อมกับ wget ฉันสามารถติดตั้งได้ แต่ต้องทำอย่างนั้น (เว้นแต่ฉันจะพลาดอะไรบางอย่าง) ฉันต้องติดตั้ง XCode และ MacPort ก่อนซึ่งฉันต้องการหลีกเลี่ยง

Curl สามารถใช้งานได้แม้ว่าจะดูเหมือน แต่ฉันไม่ทราบวิธีการทำงานหรือวิธีการใช้งานจริง หากฉันมีรายการไฟล์ในไฟล์ข้อความ (หนึ่งพา ธ เต็มต่อบรรทัดเช่นftp: // user: pass @ server / dir / file1 ) ฉันจะใช้ curl เพื่อดาวน์โหลดไฟล์ทั้งหมดได้อย่างไร? และฉันจะขดไม่ยอมแพ้ได้หรือไม่? กดไลค์อีกครั้งและลองดาวน์โหลดต่อจากที่ค้างไว้หรือไม่

คำตอบ:


20

หลังจาก googling และ man อ่านและเช่นในขณะที่ฉันได้คิดหาวิธีแก้ปัญหาที่ทำงานสำหรับฉัน:

curl ftp://server/dir/file[01-30].ext --user user:pass -O --retry 999 --retry-max-time 0 -C -
  • [01-30] จะทำให้ดาวน์โหลด 30 ไฟล์ชื่อ file01.ext, file02.ext และอื่น ๆ
  • --user user:pass ควรชัดเจน
  • -O เพื่อส่งออกไปยังไฟล์ที่มีชื่อเดิม
  • --retry 999 เพื่อลองอีกครั้ง 999 ครั้ง
  • --retry-max-time 0เพื่อป้องกันไม่ให้มีการกำหนดเวลา retrys ใหม่ พฤติกรรมเริ่มต้นถ้าคุณไม่ได้ระบุคงที่ --retry-delay คือการนอนหลับครั้งแรกหนึ่งวินาทีระหว่างการลองแล้วสองเท่านั้นจนกว่าจะถึง 10 นาที ระหว่างการลองใหม่
  • -C -เพื่อให้มันดำเนินการต่อที่มันลดลงของ (ถ้าคุณเรียกใช้คำสั่งอีกครั้ง) เส้นประภายหลังบอกให้ขบว่าจะกลับมาทำงานต่อจากที่ใด

หากมีคนรู้วิธีรับชื่อไฟล์จากไฟล์แทนโปรดแจ้งให้เราทราบ


ในหน้า man มันกล่าวต่อไปนี้:

- <URL>
ระบุ URL ที่จะดึงข้อมูล ตัวเลือกนี้มีประโยชน์มากที่สุดเมื่อคุณต้องการระบุ URL ในไฟล์ปรับแต่ง

ดูเหมือนว่าอาจเป็นสิ่ง แต่ไม่เข้าใจว่าจะใช้อย่างไร ...


2

คุณสามารถใช้ตัวเลือก -K เพื่องอเพื่อระบุไฟล์ปรับแต่ง ในกรณีนั้นคุณใช้ไวยากรณ์:

optionname=<value>

หากคุณมีไฟล์ที่มีรายการ URL คุณสามารถใช้ curl ดังนี้:

sed 's/\(.*\)/-O\nurl=\1/g' url_list.txt | curl -K -

ซึ่งเปลี่ยนรายการ URL เช่น:

http://host1.com/foo.html
http://host2.com/bar.html

เป็นรูปแบบดังนี้:

-O
url=http://host1.com/foo.html
-O
url=http://host2.com/bar.html

Curl อ่านและตีความแต่ละตัวเลือกที่คล้ายกัน

HTH,

อาดัม

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