ฉันจะดาวน์โหลดไฟล์ ZIP ด้วยคำสั่ง curl ได้อย่างไร ฉันพยายามcurl -sO
แต่เกิดข้อผิดพลาด ฉันต้องการดาวน์โหลดไฟล์ zip จากที่อยู่:
http://github.com/ziyaddin/xampp/archive/master.zip
แต่ทำไม่ได้ ฉันต้องพิมพ์อะไร
ฉันจะดาวน์โหลดไฟล์ ZIP ด้วยคำสั่ง curl ได้อย่างไร ฉันพยายามcurl -sO
แต่เกิดข้อผิดพลาด ฉันต้องการดาวน์โหลดไฟล์ zip จากที่อยู่:
http://github.com/ziyaddin/xampp/archive/master.zip
แต่ทำไม่ได้ ฉันต้องพิมพ์อะไร
คำตอบ:
ลอง wget แทนการขด: wget http://github.com/ziyaddin/xampp/archive/master.zip
wget
แทนcurl
?
unzip
ไฟล์ที่ดาวน์โหลดด้วยcurl
และทำงานได้ดีกับwget
คุณสามารถใช้ได้:
curl https://github.com/ziyaddin/xampp/archive/master.zip -O -J -L
บันทึกเป็น: xampp-cli-master.zip
-L
ในกรณีที่พบการเปลี่ยนเส้นทาง-O
สำหรับชื่อไฟล์ระยะไกล ( master.zip
)-J
(ใช้กับ-O
) เพื่ออนุญาตให้ใช้ชื่อไฟล์ส่วนหัวระยะไกล ( xampp-cli-master.zip
)
หรือใช้-o
เพื่อสร้างชื่อไฟล์ของคุณเอง:
curl https://github.com/ziyaddin/xampp/archive/master.zip -L -o MyFilename.zip
บันทึกเป็น: MyFilename.zip
หมายเหตุ: (GitHub รองรับ SSL - ใช้https://
)
คุณสามารถใช้curlrc
ไฟล์กำหนดค่าหรือนามแฝงคำสั่ง CURL เพื่อใช้curl -O -L
เพื่ออนุญาตให้มันทำงานคล้ายกับ WGET
ดู: https://curl.haxx.se/docs/manpage.html#OPTIONS (ดู: -O , -J , -L , -o )
สังเกตคำเตือนของการใช้ CURL ด้วยตัวเลือก -J:
ไม่มีความพยายามในการถอดรหัส% -sequences (ยัง) ในชื่อไฟล์ที่ให้ไว้ดังนั้นตัวเลือกนี้อาจให้ชื่อไฟล์ที่ไม่คาดคิดแก่คุณ
คำเตือน : ใช้ตัวเลือกนี้อย่างรอบคอบโดยเฉพาะบน Windows เซิร์ฟเวอร์โกงสามารถส่งชื่อ DLL หรือไฟล์อื่น ๆ ที่สามารถโหลดโดยอัตโนมัติโดย Windows หรือซอฟต์แวร์บุคคลที่สาม
หากคุณต้องการดาวน์โหลดไฟล์ใช้wget [option]... [URL]...
แทน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกเพียงพิมพ์ลงในเทอร์มินัลของคุณ: man wget
เพื่อจุดประสงค์ของคุณ:
wget http://github.com/ziyaddin/xampp/archive/master.zip
โปรดทราบว่าไฟล์. zip จะถูกบันทึกไว้ในไดเรกทอรีปัจจุบันที่คุณอยู่
wget
curl
สำหรับทุกคนที่สงสัยว่าความแตกต่างระหว่างทั้งสองดูที่นี่
curl
ที่มีส่วนช่วยwget
ในบทบาทเล็กน้อย การละเลยการจ้องมองหนึ่งครั้ง (ตามโครงการขนาดเล็กครั้งเดียวของฉัน) คือการที่ wget เร็วกว่าขด 10 เท่า (<2 วินาทีกับ 12 วินาที) ดึงเวลาพระอาทิตย์ขึ้นและพระอาทิตย์ตกจากhttps://www.timeanddate.com
ในการดาวน์โหลดไฟล์ใน GitHub (หรือไซต์อื่น ๆ ที่เปลี่ยนเส้นทาง) โดยใช้curl
คุณจะต้องผ่าน-L
(ติดตามการเปลี่ยนเส้นทาง) ดังนั้นให้ใช้:
curl -L http://github.com/ziyaddin/xampp/archive/master.zip -o xampp.zip
"curl -LOk" ทำให้ใช้โปรโตคอลที่ไม่ปลอดภัย (-k) ปิดใช้งานการตรวจสอบใบรับรอง SSL (ซึ่งล้มเหลวเนื่องจากเส้นทางที่ไม่ถูกต้องไม่ตรงกับใบรับรอง) และสร้างไฟล์เอาต์พุตโดยใช้ชื่อไฟล์ (-O) ที่เสนอจากเซิร์ฟเวอร์ระยะไกล (ยังไม่ปลอดภัย) ในความคิดของฉันเซิร์ฟเวอร์ควรได้รับการกำหนดค่าให้สร้างนามแฝงการเปลี่ยนเส้นทางในท้องถิ่นเมื่อจำเป็นเพื่อหลีกเลี่ยงการผ่านส่วนที่ไม่สอดคล้องกันของ URL แต่การเปลี่ยนเส้นทางนั้นทำโดยใช้การเปลี่ยนเส้นทาง HTTP เท่านั้น (ข้อผิดพลาด HTTP 30x) ซึ่งทำให้เกิดปัญหาในการม้วนงที่ไม่ปฏิบัติตาม (โดยค่าเริ่มต้น) การเปลี่ยนเส้นทาง (ไม่ปลอดภัย) นี้และตัวเลือก (-k) ปิดใช้งานการตรวจสอบความปลอดภัยนี้ ดังนั้นแทนที่จะใช้การเปลี่ยนเส้นทาง HTTP (ย้ายอย่างถาวร) โปรดเพิ่มลิงก์ภายในบนระบบไฟล์ของเซิร์ฟเวอร์ หากจำเป็นต้องใช้เพราะ URL นั้นโฮสต์จริงบนเซิร์ฟเวอร์จริงอื่นที่ไม่มีการเข้าถึงโดยตรงระหว่างระบบไฟล์ของพวกเขาคุณควรใช้ชื่อ DNS อื่นสำหรับโฮสต์นี้เพื่อให้ลูกค้าจะสอบถามที่ถูกต้องโดยตรงโดยไม่ต้องเปลี่ยนเส้นทางใด ๆ จากนั้นแก้ไขหน้าเว็บของคุณ (คุณสามารถใช้บันทึกการใช้เว็บเซิร์ฟเวอร์ของคุณเพื่อดูว่ามีการส่งคืนการเปลี่ยนเส้นทาง HTTP 30x ที่ไหนและอาจต้องตรวจสอบและอัปเดตหน้าเว็บใด) การบังคับให้ไคลเอ็นต์ใช้โปรโตคอลที่ไม่ปลอดภัย / ไม่ถูกตรวจสอบนั้นไม่ใช่ตัวเลือกที่ดี
ดังนั้นนี่เป็นปัญหาของการกำหนดค่าที่แย่มากบนเว็บเซิร์ฟเวอร์: ลองติดต่อผู้ดูแลระบบเพื่อแก้ไข
คุณสามารถใช้Axel ได้เช่นกัน Axel เป็นตัวเร่งความเร็วในการดาวน์โหลดบรรทัดคำสั่ง มันรองรับHTTP, HTTPS, FTP
และFTPS
โปรโตคอล มันเป็นทางเลือกที่ดีและเร็วขึ้น
ติดตั้งaxel
โดยใช้:
apt-get install axel
จากนั้นดาวน์โหลดไฟล์ของคุณโดย:
axel http://github.com/ziyaddin/xampp/archive/master.zip
ใช้ตัวเลือก-L
เพื่อติดตามการเปลี่ยนเส้นทางคุณสามารถใช้--output
ตัวเลือกเพื่อกำหนดเส้นทางและชื่อให้กับไฟล์ zip ตัวอย่างเช่น:
sudo curl -L https://github.com/CISOfy/lynis/archive/master.zip --output /etc/lynis.zip
หมายเหตุ: ใช้ sudo หากคุณไม่มีสิทธิ์เขียนไปยังโฟลเดอร์เป้าหมาย