ในบทช่วยสอนนี้ เราจะดู curl และ wget วิธีเริ่มต้นใช้งาน และที่สำคัญที่สุดคือความแตกต่างระหว่างทั้งสอง
cURL คืออะไร?
cURL เป็นยูทิลิตีบรรทัดคำสั่งแบบโอเพ่นซอร์สฟรีที่ช่วยให้ผู้ใช้สามารถถ่ายโอนข้อมูลจากเครื่องระยะไกลเครื่องหนึ่งไปยังอีกเครื่องหนึ่งโดยมีการโต้ตอบกับผู้ใช้น้อยที่สุดหรือไม่มีเลย การใช้ CURL เป็นที่แพร่หลายในอุปกรณ์ต่างๆ เช่น เราเตอร์ เครื่องพิมพ์ โทรศัพท์ แท็บเล็ต เครื่องเล่นสื่อ และอื่นๆ
รองรับการดาวน์โหลดและอัปโหลดโดยใช้โปรโตคอล เช่น HTTP/HTTPS, FTP, SFTP, SCP, IMAP, LDAP/LDAPS, SMB/SMBS, TELNET, POP3, GOPHER และอื่นๆ อีกมากมาย
cURL ยังมีพร็อกซี่ การโอนต่อ การตรวจสอบผู้ใช้ ใบรับรอง SSL และอื่นๆ อีกมากมาย
wget คืออะไร?
GNU Wget หรือที่เรียกกันทั่วไปว่า wget เป็นยูทิลิตี้บรรทัดคำสั่งฟรีสำหรับการถ่ายโอนไฟล์โดยใช้ HTTP/HTTPS, FTP และ FTPS โดยมีคุณสมบัติต่างๆ เช่น การดาวน์โหลดแบบเรียกซ้ำ การควบคุมแบนด์วิดท์ การยกเลิกการถ่ายโอนต่อ การดาวน์โหลดในพื้นหลัง ไฟล์มิเรอร์แบบเรียกซ้ำและไดเรกทอรี และอื่นๆ อีกมากมาย
จะติดตั้ง cURL และ Wget ได้อย่างไร?
cURL และ wget เป็นเครื่องมือยอดนิยมที่มีอยู่ในลีนุกซ์รุ่นหลักๆ หากคุณไม่ได้ติดตั้งเครื่องมือใดๆ คุณสามารถใช้คำสั่งด้านล่างเพื่อติดตั้ง:
เดเบียน/อูบุนตู:
# ติดตั้ง cURLsudo apt-get installcurl
# ติดตั้ง wget
sudo apt-get install wget
ซุ้มประตู / มันจาโร:
# ติดตั้ง cURLsudopacman-NScurl
# ติดตั้ง wget
sudopacman-NS wget
REHL/CentOS/Fedora:
# ติดตั้ง cURLsudo ยำติดตั้งcurl
sudodnfติดตั้งcurl
# ติดตั้ง wget
sudo ยำติดตั้ง wget
sudodnfติดตั้ง wget
วิธีใช้ cURL และ Wget (ตัวอย่างกรณีการใช้งาน)
เพื่อให้แน่ใจว่าคุณเข้าใจความเหมือนและความแตกต่างระหว่าง cURL และ wget คุณควรดูตัวอย่างบางส่วน:
โปรโตคอล HTTP/HTTPS:
ทั้ง cURL และ wget รองรับโปรโตคอล HTTP และ HTTPS ดังนั้น หากเราดาวน์โหลดเว็บไซต์ เช่น linuxhint.com:
ขด https://linuxhint.com-หรือlinuxhint.htmlขด https://linuxhint.com-หรือlinuxhint.html
%รวม%ได้รับ%Xferd เวลาความเร็วเฉลี่ย เวลา เวลาปัจจุบัน
Dload อัพโหลดความเร็วที่เหลือทั้งหมดที่ใช้ไป
100256k0256k0 0166k0-: -: -0:00:01 --:--:-- 166k
ตามค่าเริ่มต้น cURL จะพิมพ์เนื้อหาของทรัพยากรบนเว็บในเทอร์มินัล เราใช้แฟล็ก -o เพื่อเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์
สิ่งต่อไปนี้ใช้กับ wget:
wgethttps://linuxhint.com---2021-06-2005:09:สี่ห้า- https://linuxhint.com/
กำลังแก้ไข linuxhint.com(linuxhint.com)... 104.21.58.234, 172.67.209.252,2606:4700:3033::6815:3aea, ...
กำลังเชื่อมต่อกับ linuxhint.com(linuxhint.com)|104.21.58.234|:443...เชื่อมต่อ
ส่งคำขอ HTTP แล้ว กำลังรอการตอบกลับ...200ตกลง
ความยาว: unspecified[ข้อความ/html]
บันทึกไปที่: 'index.html'
index.html
[ <=> ]256.25K 506KB/NSใน0.5s
ปี 2564-06-ยี่สิบ05:09:46 (506KB/NS)- บันทึก 'index.html' แล้ว[262396]
ในทางกลับกัน Wget จะบันทึกทรัพยากรที่ร้องขอไปยังไฟล์
เป็นการดีที่จะทราบว่าเครื่องมือทั้งสองดาวน์โหลดทรัพยากร รายละเอียด ls ของทั้งสองไฟล์แสดงทั้งสองขนาดไฟล์
$ลส -NSindex.html linuxhint.html-rw-rw-r-- 1linuxhint ลินุกซ์ชิน262396จุน19 สิบห้า:ห้าสิบindex.html
-rw-rw-r-- 1linuxhint ลินุกซ์ชิน262396จุนยี่สิบ05:07 linuxhint.html
โปรโตคอล FTP:
ทั้ง cURL และ wget รองรับการดาวน์โหลดบนโปรโตคอล FTP อย่างไรก็ตาม cURL รองรับการอัปโหลดไปยัง ftp
ใช้คำสั่งด้านล่างเพื่อดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ FTP ด้วย wget:
wget --ผู้ใช้= เดเบียน--รหัสผ่าน='เดเบียน' ftp://192.168.0.112/backup.zstwget --ผู้ใช้= เดเบียน--รหัสผ่าน='เดเบียน'ftp://192.168.0.112/backup.zst
---2021-06-2005:29: 06-- ftp://192.168.0.112/backup.zst
=>'backup.zst'
กำลังเชื่อมต่อกับ 192.168.0.112:ยี่สิบเอ็ด...เชื่อมต่อ
การบันทึกใน เช่นเดเบียน ... เข้าสู่ระบบใน!
==>ระบบ ... เสร็จแล้ว ==>ป.ป.ช....เรียบร้อยแล้ว
==>TYPE I ... เสร็จแล้ว ==>ไม่จำเป็นต้องใช้ CWD
==>SIZE backup.zst ... เสร็จแล้ว
==>PASV ... เสร็จแล้ว ==>RETR backup.zst ... เสร็จแล้ว
backup.zst
[ <=> ] 0--.- KB/NSใน0s
ปี 2564-06-ยี่สิบ05:29: 06(0.00NS/NS)- 'backup.zst' บันทึกแล้ว[0]
ใช้ curl เติม-ยูตั้งค่าสถานะเป็น:
curl-ยูเดเบียน:เดเบียน 'ftp://192.168.0.112/backup.zst'-หรือbackup.zst
curl-ยูเดเบียน: เดเบียน'ftp://192.168.0.112/backup.zst' -หรือbackup.zst
%รวม%ได้รับ%Xferd เวลาความเร็วเฉลี่ย เวลา เวลาปัจจุบัน
Dload อัพโหลดความเร็วที่เหลือทั้งหมดที่ใช้ไป
0 0 0 0 0 0 0 0-: -: - -: -: - -: -: -0
ในการอัปโหลดไฟล์ถึงftpด้วย curl เราใช้ the-NSตัวเลือกเป็น:
curl-ยูเดเบียน: เดเบียน-NSbackup1.zst ftp://192.168.0.112/ftp/
ตรวจสอบให้แน่ใจว่าไดเร็กทอรีมีอยู่และผู้ใช้มีสิทธิ์ในการเขียน
บันทึก: แม้ว่า cURL จะรองรับโปรโตคอลที่หลากหลาย แต่ก็ไม่ได้ให้การดาวน์โหลดแบบเรียกซ้ำ ในทางกลับกัน Wget รองรับการดาวน์โหลดแบบเรียกซ้ำโดยใช้ตัวเลือก –recursive เนื่องจากทั้งโปรโตคอล HTTP/HTTPS และ FTP/FTPS มีฟังก์ชันดังกล่าว
ความคล้ายคลึงกันระหว่าง wget และ cURL
ตอนนี้สำหรับไอซิ่งบนเค้ก:
- เครื่องมือทั้งสองรองรับโปรโตคอลมาตรฐาน เช่น HTTP, HTTPS, FTP, FTPS
- เครื่องมือทั้งสองดาวน์โหลดไฟล์จากอินเทอร์เน็ต
- เครื่องมือทั้งสองรองรับคุกกี้ HTTP
- เครื่องมือทั้งสองรองรับเอาต์พุตไปยังไฟล์
- ทั้งเครื่องมือฟรีและได้รับการพัฒนาอย่างแข็งขัน
- เครื่องมือทั้งสองรองรับการถ่ายโอนประวัติย่อ
- เครื่องมือทั้งสองรองรับ HTTP POST
ความแตกต่างระหว่าง wget และ cURL
นี่คือความแตกต่างบางประการระหว่าง curl และ wget:
- Wget เป็นยูทิลิตี้การถ่ายโอนที่เรียบง่าย ในขณะที่ curl นำเสนออะไรอีกมากมาย
- Curl มีไลบรารี libcurl ซึ่งสามารถขยายเป็นแอปพลิเคชัน GUI ได้ ในทางกลับกัน Wget เป็นยูทิลิตี้บรรทัดคำสั่งอย่างง่าย
- Wget รองรับโปรโตคอลน้อยกว่าเมื่อเปรียบเทียบกับ cURL
- ไม่รองรับการดาวน์โหลดแบบเรียกซ้ำใน curl
- Wget พร้อมใช้งานในระบบ Linux ในขณะที่ cURL พร้อมใช้งานในระบบ Windows
- cURL รองรับการถ่ายโอนแบบขนานหลายรายการ
- cURL ดำเนินการคลายการบีบอัด HTTP ที่เข้ารหัสการถ่ายโอน ในขณะที่ wget ไม่ทำ
- cURL รองรับ HTTP แบบสองทิศทางในขณะที่ wget เสนอ HTTP POST ธรรมดา
- cURL รองรับวิธีการตรวจสอบสิทธิ์ HTTP มากกว่าเมื่อเปรียบเทียบกับ wget
- Wget ไม่รองรับ SOCKS
- Wget ต้องติดตั้ง gnulib
- ต่างจาก curl ตรงที่คุณสมบัติต่างๆ เช่น คุกกี้ การประทับเวลา และการติดตามการเปลี่ยนเส้นทางถูกเปิดใช้งานโดยค่าเริ่มต้นใน wget cURL กำหนดให้ต้องระบุอย่างชัดเจน
บทสรุป
บทช่วยสอนนี้เน้นที่ความเหมือนและความแตกต่างระหว่าง cURL แม้ว่าอาจดูเหมือน cURL เป็นตัวเลือกที่ดีกว่า แต่ก็มีบางกรณีที่ wget เป็นตัวเลือกที่ดีที่สุด
คำแนะนำของฉันคือการเลือกสิ่งที่เหมาะกับคุณ