การใช้ CURL เพื่อดาวน์โหลดไฟล์ระยะไกลจาก Command Line

สามารถใช้เครื่องมือบรรทัดคำสั่ง curl ที่มีประสิทธิภาพเพื่อดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ระยะไกลได้ ผู้ใช้บรรทัดคำสั่งที่ยาวนานรู้ดีว่าสิ่งนี้จะเป็นประโยชน์สำหรับสถานการณ์ที่หลากหลาย แต่เพื่อให้สิ่งต่างๆง่ายขึ้นจำนวนมากจะพบว่าการดาวน์โหลดไฟล์ที่มีการขดมักเป็นทางเลือกที่เร็วกว่าในการใช้เว็บเบราเซอร์หรือไคลเอ็นต์ FTP จากฝั่ง GUI OS X (หรือ Linux) นี่เป็นประโยชน์สำหรับสถานการณ์ในท้องถิ่น แต่มีค่าเฉพาะถ้าคุณอยู่ในสถานการณ์ที่คุณต้องการดาวน์โหลดบางสิ่งบางอย่างไปยัง Mac ระยะไกลเมื่อเชื่อมต่อผ่าน SSH

สำหรับจุดประสงค์ของคำแนะนำนี้เราจะมุ่งเน้นการดาวน์โหลดไฟล์จากสองโปรโตคอล HTTP และ SFTP ที่พบโดยทั่วไป แต่ควรสังเกตว่า cURL สนับสนุนโปรโตคอลอื่น ๆ อีกมากมาย แม้ว่า curl เป็นเรื่องง่ายที่จะใช้มีความรู้เกี่ยวกับบรรทัดคำสั่งแนะนำ

ดาวน์โหลดไฟล์ที่ตรงกับที่ตรงกับ Curl-O

การใช้ค่าสถานะโอ้ -O กับการดาวน์โหลดไฟล์ curl จากเซิร์ฟเวอร์ระยะไกลขณะที่ยังรักษาชื่อไฟล์ให้ถูกต้องไวยากรณ์พื้นฐานสำหรับข้อมูลต่อไปนี้:

curl -O [url]

ซึ่งหมายความว่าหากไฟล์ URL ที่ระบุมีชื่อว่า "sample.zip" จะดาวน์โหลดด้วยชื่อไฟล์ "sample.zip" และหากไฟล์มีชื่อว่าอะไรที่ใหญ่โตและซับซ้อนเช่น "LongExampleFileNameForOSXDaily-v-1-3-51-revision- 515b12-readme.txt "บนเซิร์ฟเวอร์ระยะไกลจะบันทึกด้วยชื่อที่ถูกต้องบนเครื่องท้องถิ่น ชื่อไฟล์ที่ยาวขึ้นมักใช้งานได้ดีกว่ากับ -o แทนที่จะเป็น -O ซึ่งเราจะกล่าวถึงในไม่ช้า

ผู้อ่านปกติอาจจำได้ว่าเราใช้คำสั่ง curl -O เมื่ออธิบายวิธีแยกเนื้อหาเสียงจริงออกจากไฟล์สตรีมมิ่ง m3u

การเริ่มต้นการดาวน์โหลดใด ๆ ที่มีการม้วนแสดงเปอร์เซ็นต์ที่ถ่ายโอนเวลาที่ใช้ในการดาวน์โหลดและเวลาที่เหลือและความเร็วในการโอน

ภาพหน้าจอมีการแสดงที่ดีกว่าตัวอย่างด้านล่างที่วางไว้ แต่จะมีลักษณะดังนี้:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k

ด้วยความเร็วในการโอนที่แสดงว่าคุณสามารถเปลี่ยนเส้นทางการส่งออกของ curl ไปที่ / dev / null และใช้เพื่อทดสอบความเร็วในการเชื่อมต่ออินเทอร์เน็ต แต่คำสั่ง wget สามารถอ่านและปฏิบัติตามแถบการโอนได้ง่ายขึ้นดังนั้น wget จึงเหมาะสมกับงานดังกล่าว

การบันทึกไฟล์ระยะไกลด้วยชื่ออื่นที่มีคำว่า "ขด"

การใช้แฟล็ก lower-o เพื่อช่วยให้คุณสามารถระบุชื่อไฟล์ที่แตกต่างกันสำหรับไฟล์ที่ดาวน์โหลดมาได้มากกว่าวิธีที่ชื่อบนเซิร์ฟเวอร์ระยะไกล การทำเช่นนี้อาจเป็นประโยชน์ในการลดชื่อไฟล์ยาวหรือติดป้ายกำกับบางอย่างเพื่อให้สามารถค้นหาได้โดยง่ายด้วยตัวคุณเอง ไวยากรณ์ทั่วไปจะเป็น:

curl -o [shortname] [url]

ตัวอย่างเช่นหากคุณต้องการบันทึกไฟล์ IPSW ของ iOS ที่คุณพบในเซิร์ฟเวอร์ Apple โดยไม่ต้องมีชื่อเต็มยาวคุณสามารถใช้ข้อมูลต่อไปนี้:

curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw

ไฟล์นี้จะดาวน์โหลดไฟล์ "iPhone5.3_7.0.4_11B554a_Restore.ipsw" แต่มีชื่อว่า "iPhone5C-704.ipsw" ที่สั้นกว่า

ถ้าคุณไม่ต้องการบันทึกแฟ้มลงในไดเร็กทอรีที่ใช้งานปัจจุบันให้ระบุพา ธ ที่เป็นส่วนหนึ่งของชื่อไฟล์ดังนี้:

curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg

กำลังดาวน์โหลดไฟล์หลายไฟล์พร้อมกันกับขด

cURL สามารถดาวน์โหลดไฟล์ได้หลายไฟล์ในเวลาเดียวกันสิ่งที่คุณต้องทำคือระบุมากกว่าหนึ่ง URL เช่น:

curl -O [URL 1] [URL 2] [URL 3]

สำหรับไฟล์ที่มีชื่อแตกต่างกันหรือโฮสต์บนเซิร์ฟเวอร์อื่นหรือในเส้นทางไดเรกทอรีอื่นใช้ URL ที่สมบูรณ์เช่น:

curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt

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

curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1[1-3].txt

ไฟล์นี้จะคว้าไฟล์ fdl-1.1.txt, fd1-1.2.txt และ fd1-1.3.txt ทั้งหมดในเวลาเดียวกันโดยไม่ต้องระบุ URL ที่ไม่ซ้ำกัน แน่นอนว่าไฟล์นี้ใช้ได้เฉพาะเมื่อไฟล์อยู่ในไดเรกทอรีเดียวกันและอยู่ในโดเมนเดียวกัน

กำลังตรวจสอบด้วย curl

นอกจากนี้คุณยังสามารถผ่านการตรวจสอบสิทธิ์กับ cURL โดยใช้ flag -u:

curl -u user:pass -O ftp://remote_url/file-to-download.zip

โปรดจำไว้ว่าประวัติการทุบตีจะเก็บรหัสผ่านไว้เป็นข้อความล้วนเมื่อใช้ -u กับชื่อผู้ใช้และรหัสผ่านที่ระบุดังนั้นจึงไม่แนะนำให้ใช้กับสถานการณ์ส่วนใหญ่ คุณสามารถได้รับรอบที่โดยการวางช่องว่างที่ด้านหน้าของ 'ขด' หากคุณไม่ใช้สเปซบาร์เพื่อนำหน้าคำสั่งคุณอาจต้องการลบประวัติคำสั่งหลังจากนั้นเพื่อให้ปลอดภัย

โปรโตคอลและการใช้งานที่สนับสนุนนอกเหนือจาก HTTP & FTP

ดังที่ได้กล่าวมาก่อนหน้านี้การใช้งาน CURL ไปไกลเกินกว่า HTTP และ FTP เนื่องจากการป้อนข้อมูลในหน้าคู่มือการใช้งานแบบหยิกกล่าวถึงโปรโตคอลเพิ่มเติมในคำอธิบาย:

curl เป็นเครื่องมือในการถ่ายโอนข้อมูลจากหรือไปยังเซิร์ฟเวอร์โดยใช้หนึ่งใน
โปรโตคอลที่สนับสนุน (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,
IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
TELNET และ TFTP)

นอกจากนี้คุณยังสามารถใช้ Curl ที่สามารถใช้สำหรับคำขอ PUT และ POST คุกกี้พร็อกซีอุโมงค์ดาวน์โหลดต่อและแม้แต่คว้าข้อมูลส่วนหัว HTTP หรือเปลี่ยน User Agent (ปลอมแปลงได้อย่างมีประสิทธิภาพ) โดยไม่จำเป็นต้องใช้เว็บเฉพาะ เบราว์เซอร์

เช่นเดียวกับโปรแกรมอรรถประโยชน์บรรทัดคำสั่งคุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ curl โดยเรียก man page ที่เหมาะสมด้วยคำสั่ง 'man curl'