cURL กับ wget ใน Linux: อะไรคือความแตกต่าง?

เผยแพร่แล้ว: 2022-07-13
แล็ปท็อป Linux แสดง bash prompt
fatmawati achmad zaenuri/Shutterstock.com

หากคุณถามผู้ใช้ Linux ว่าดาวน์โหลดไฟล์ด้วยอะไร บางคนจะบอกว่า wget และคนอื่นๆ จะพูดว่า cURL อะไรคือความแตกต่างและดีกว่าที่อื่น?

มันเริ่มต้นด้วยการเชื่อมต่อ

นักวิจัยของรัฐบาลเริ่มเชื่อมโยงเครือข่ายต่างๆ เข้าด้วยกันตั้งแต่ช่วงทศวรรษที่ 1960 ทำให้เกิดงานเครือ ข่าย ที่ เชื่อม ต่อถึงกัน แต่การกำเนิดของอินเทอร์เน็ตอย่างที่เราทราบนั้นเกิดขึ้นเมื่อวันที่ 1 มกราคม พ.ศ. 2526 เมื่อมีการใช้โปรโตคอล TCP/IP นี่คือลิงค์ที่ขาดหายไป อนุญาตให้คอมพิวเตอร์และเครือข่ายที่แตกต่างกันสามารถสื่อสารโดยใช้มาตรฐานร่วมกัน

ในปี 1991 CERN ได้เปิดตัวซอฟต์แวร์เวิลด์ไวด์เว็บซึ่งพวกเขาใช้ภายในองค์กรมาสองสามปีแล้ว ความสนใจในการซ้อนทับภาพนี้สำหรับอินเทอร์เน็ตเกิดขึ้นทันทีและแพร่หลาย เมื่อสิ้นสุดปี 1994 มีเว็บเซิร์ฟเวอร์ 10,000 เซิร์ฟเวอร์และผู้ใช้ 10 ล้านคน

อินเทอร์เน็ตทำงานอย่างไร
ที่เกี่ยวข้อง อินเทอร์เน็ตทำงานอย่างไร?

เหตุการณ์สำคัญทั้งสองนี้—อินเทอร์เน็ตและเว็บ—แสดงถึงลักษณะการเชื่อมต่อที่แตกต่างกันมาก แต่ก็มีฟังก์ชันเหมือนกันหลายอย่างเช่นกัน

การเชื่อมต่อมีความหมายแค่นั้น คุณกำลังเชื่อมต่อกับอุปกรณ์ระยะไกลบางอย่าง เช่น เซิร์ฟเวอร์ และคุณกำลังเชื่อมต่อกับมันเพราะมีบางอย่างที่คุณต้องการหรือต้องการ แต่คุณจะดึงทรัพยากรที่โฮสต์จากระยะไกลนั้นไปยังคอมพิวเตอร์ในพื้นที่ของคุณจากบรรทัดคำสั่ง Linux ได้อย่างไร

ในปี พ.ศ. 2539 ยูทิลิตี้สองรายการถือกำเนิดขึ้นซึ่งอนุญาตให้คุณดาวน์โหลดทรัพยากรที่โฮสต์จากระยะไกล พวกเขาคือ wget ซึ่งเปิดตัวในเดือนมกราคมและ cURL ซึ่งเปิดตัวในเดือนธันวาคม ทั้งคู่ทำงานบนบรรทัดคำสั่ง Linux พวกเขาทั้งสองเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลและทั้งคู่ดึงข้อมูลให้คุณ

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

พิจารณาศัลยแพทย์สองคน คุณอาจไม่ต้องการให้ศัลยแพทย์ตาทำการผ่าตัดบายพาสหัวใจ และคุณไม่ต้องการให้ศัลยแพทย์หัวใจทำการผ่าตัดต้อกระจก ใช่ พวกเขาทั้งคู่เป็นผู้เชี่ยวชาญทางการแพทย์ที่มีทักษะสูง แต่นั่นไม่ได้หมายความว่าพวกเขาจะเข้ามาแทนที่กันและกัน

เช่นเดียวกันกับ wget และ cURL

วัตถุประสงค์ต่างกัน คุณสมบัติต่างกัน บางส่วนทับซ้อนกัน

“w” ในคำสั่ง wget เป็นตัวบ่งชี้ถึงจุดประสงค์ที่ตั้งใจไว้ จุดประสงค์หลักคือเพื่อดาวน์โหลดหน้าเว็บหรือแม้แต่เว็บไซต์ทั้งหมด หน้า man อธิบายว่าเป็นเครื่องมือในการดาวน์โหลดไฟล์จากเว็บโดยใช้โปรโตคอล HTTP, HTTPS และ FTP

ในทางตรงกันข้าม cURL ทำงานได้กับ 26 โปรโตคอล รวมถึง SCP, SFTP และ SMSB เช่นเดียวกับ HTTPS หน้า man บอกว่าเป็นเครื่องมือสำหรับถ่ายโอนข้อมูล ไปยังหรือจาก เซิร์ฟเวอร์ ไม่เหมาะกับการทำงานกับเว็บไซต์โดยเฉพาะ มีขึ้นสำหรับการโต้ตอบกับเซิร์ฟเวอร์ระยะไกลโดยใช้โปรโตคอลอินเทอร์เน็ตใด ๆ ที่สนับสนุน

ดังนั้น wget จึงเน้นที่เว็บไซต์เป็นหลัก ในขณะที่ cURL เป็นสิ่งที่ทำงานในระดับที่ลึกกว่า ลงไปที่ระดับอินเทอร์เน็ตวานิลลาธรรมดา

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

cURL ช่วยให้คุณโต้ตอบกับเซิร์ฟเวอร์ระยะไกล มันสามารถอัปโหลดไฟล์รวมทั้งดึงข้อมูลได้ cURL ทำงานร่วมกับพร็อกซี SOCKS4 และ SOCKS5 และ HTTPS ไปยังพร็อกซี รองรับการคลายการบีบอัดไฟล์อัตโนมัติในรูปแบบ GZIP, BROTLI และ ZSTD cURL ยังให้คุณดาวน์โหลดการถ่ายโอนหลายรายการพร้อมกัน

ความเหลื่อมล้ำระหว่างทั้งสองคือ wget และ cURL ช่วยให้คุณดึงหน้าเว็บและใช้เซิร์ฟเวอร์ FTP

เป็นเพียงเมตริกคร่าวๆ แต่คุณสามารถชื่นชมชุดคุณลักษณะที่เกี่ยวข้องของเครื่องมือทั้งสองได้โดยดูจากความยาวของหน้า man ในเครื่องทดสอบของเรา man page สำหรับ wget มีความยาว 1433 บรรทัด หน้า man สำหรับ cURL คือ 5296 บรรทัดมหันต์

ดูอย่างรวดเร็วที่ wget

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

เพียงใช้คำสั่ง wget กับ URL ไปยังหน้าเว็บหรือไฟล์ระยะไกล

 wget https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

กำลังดาวน์โหลดเอกสาร Word ด้วย wget

ไฟล์จะถูกดึงและบันทึกลงในคอมพิวเตอร์ของคุณด้วยชื่อเดิม

เอาต์พุตจากคำสั่ง wget ดาวน์โหลดเอกสาร Word

หากต้องการบันทึกไฟล์ด้วยชื่อใหม่ ให้ใช้ตัวเลือก -O (เอกสารส่งออก)

 wget -O word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

กำลังดาวน์โหลดไฟล์ด้วย wget และบันทึกด้วยชื่อใหม่

ไฟล์ที่ดึงมาจะถูกบันทึกด้วยชื่อที่เราเลือก

ไฟล์ที่ดาวน์โหลดถูกเปลี่ยนชื่อเป็นชื่อที่ให้ไว้ในบรรทัดคำสั่ง

อย่าใช้ตัวเลือก -O เมื่อคุณกำลังดึงข้อมูลเว็บไซต์ หากคุณทำเช่นนั้น ไฟล์ที่ดึงมาทั้งหมดจะถูกผนวกเข้ากับไฟล์เดียว

หากต้องการดึงข้อมูลทั้งเว็บไซต์ ให้ใช้ตัวเลือก -m (กระจกเงา) และ URL ของหน้าแรกของเว็บไซต์ คุณจะต้องใช้ --page-requisites เพื่อให้แน่ใจว่าดาวน์โหลดไฟล์สนับสนุนทั้งหมดที่จำเป็นสำหรับการแสดงผลหน้าเว็บอย่างถูกต้องด้วย ตัวเลือก --convert-links จะปรับลิงก์ในไฟล์ที่ดึงมาเพื่อชี้ไปยังปลายทางที่ถูกต้องในเครื่องคอมพิวเตอร์ของคุณ แทนที่จะเป็นตำแหน่งภายนอกบนเว็บไซต์

ที่เกี่ยวข้อง: วิธีใช้ wget เครื่องมือดาวน์โหลดบรรทัดคำสั่งขั้นสูง

ดูอย่างรวดเร็วที่cURL

cURL เป็นโครงการโอเพ่นซอร์สอิสระ มีการติดตั้งล่วงหน้าบน Manjaro 21 และ Fedora 36 แต่ต้องติดตั้งบน Ubuntu 21.04

นี่คือคำสั่งสำหรับติดตั้ง cURL บน Ubuntu

 sudo apt ติดตั้ง curl 

การติดตั้ง cURL บน Ubuntu

ในการดาวน์โหลดไฟล์เดียวกันกับที่เราทำกับ wget และบันทึกด้วยชื่อเดียวกัน เราจำเป็นต้องใช้คำสั่งนี้ โปรดทราบว่าตัวเลือก -o (เอาต์พุต) เป็นตัวพิมพ์เล็กที่มี cURL

 curl -o word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

กำลังดาวน์โหลดไฟล์ด้วย cURL และบันทึกด้วยชื่อใหม่

ไฟล์ถูกดาวน์โหลดมาให้เรา แถบความคืบหน้า ASCII จะแสดงขึ้นระหว่างการดาวน์โหลด

ไฟล์ถูกดาวน์โหลดและบันทึกด้วยชื่อที่ระบุในบรรทัดคำสั่ง

ในการเชื่อมต่อกับเซิร์ฟเวอร์ FTP และดาวน์โหลดไฟล์ ให้ใช้ตัวเลือก -u (ผู้ใช้) และระบุคู่ชื่อผู้ใช้และรหัสผ่านดังนี้:

 curl -o test.png -u demo:password ftp://test.rebex.net/pub/example/KeyGenerator.png 

การดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ FTP ด้วย cURL

ดาวน์โหลดและเปลี่ยนชื่อไฟล์จากเซิร์ฟเวอร์ FTP ทดสอบ

ดาวน์โหลดสำเร็จจากเซิร์ฟเวอร์ FTP ด้วย cURL

ที่เกี่ยวข้อง: วิธีใช้ curl เพื่อดาวน์โหลดไฟล์จาก Linux Command Line

ไม่มีสิ่งที่ดีที่สุด

เป็นไปไม่ได้ที่จะตอบว่า “ฉันควรใช้อันไหน” โดยไม่ถามว่า “คุณกำลังพยายามทำอะไรอยู่”

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

การดาวน์โหลดหน้าเว็บและเว็บไซต์เป็นที่ที่ wget เหนือกว่าอยู่ หากนั่นคือสิ่งที่คุณกำลังทำอยู่ ให้ใช้ wget สำหรับสิ่งอื่น เช่น การอัปโหลด หรือใช้โปรโตคอลอื่นๆ จำนวนมาก ให้ใช้ cURL