ความแตกต่างระหว่างขดและ wget คืออะไร? [ปิด]


38

ทั้งสองอย่างนี้curlและwgetใช้สำหรับการดาวน์โหลดไฟล์ ฯลฯ มีเหตุผลอะไรบ้างที่จะใช้ไฟล์อื่น?


1
กำหนด "การใช้งานที่เหมาะสม"
AB

12
เกี่ยวกับการโหวตให้ปิดตามความคิดเห็น: การถามเกี่ยวกับความแตกต่างระหว่างสองเครื่องมือช่วยส่งเสริมคำตอบตามความคิดเห็นได้อย่างไร
Michael Martin-Smucker

1
@ MichaelMartin-Smucker "สมมติว่าฉันต้องดาวน์โหลดหน้าเว็บให้พูดว่า www.google.com ฉันควรมองหา wget หรือ curl ไหม?" ถ้าไม่ใช่ตามความเห็นคืออะไร
muru

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

3
@muru ฉันเดาว่าเรามีความหมายที่แตกต่างกันของความเชื่อมั่นที่อยู่เบื้องหลังคำถาม ในการตีความของฉันความเชื่อมั่นคือ: "ฉันเคยได้ยินเครื่องมือสองอย่างนี้ซึ่งดูเหมือนว่าจะทำสิ่งเดียวกันความแตกต่างระหว่างพวกเขาคืออะไรและเมื่อใดที่ฉันควรจะเลือกอย่างใดอย่างหนึ่งมากกว่ากัน? ... ซึ่งดูเหมือนคำถามที่สมเหตุสมผลสำหรับฉัน
Michael Martin-Smucker

คำตอบ:


33

หลังจากที่คุณได้กำหนดไว้ "การใช้ที่เหมาะสม" wgetการใช้งาน

ทำไม? นั่นเป็นเหตุผล:

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


คัดลอกไร้ยางอายจากที่นี่

curl

  • ห้องสมุด curlขับเคลื่อนโดยlibcurl- ห้องสมุดข้ามแพลตฟอร์มที่มี API ที่เสถียรซึ่งแต่ละคนและทุกคนสามารถใช้ได้ ความแตกต่างนี้สำคัญเนื่องจากมันสร้างทัศนคติที่แตกต่างอย่างสิ้นเชิงกับวิธีการทำสิ่งต่าง ๆ ภายใน นอกจากนี้ยังเป็นการยากกว่าเล็กน้อยในการสร้างไลบรารีกว่าเครื่องมือบรรทัดคำสั่ง "เพียง"

  • ท่อ curlทำงานได้เหมือนcatคำสั่งUnix แบบดั้งเดิมมันจะส่งข้อมูลเพิ่มเติมไปยังstdoutและอ่านเพิ่มเติมจากstdinในลักษณะ "Everything is a pipe" wgetเป็นเหมือนการcpใช้อะนาล็อกเดียวกัน

  • นัดเดียว curlโดยทั่วไปแล้วจะทำการถ่ายโอนข้อมูลแบบนัดเดียว มันถ่ายโอนเฉพาะ URL ที่ผู้ใช้ระบุและไม่มีตรรกะการดาวน์โหลดแบบเรียกซ้ำหรือตัวแยกวิเคราะห์ HTML ใด ๆ

  • โปรโตคอลอื่นcurlรองรับ FTP, FTPS, โกเฟอร์, HTTP, HTTPS, SCP, SFTP, TFTP, อินเทอร์เน็ต, DICT, LDAP, LDAPS, ไฟล์, POP3, IMAP, SMB / CIFS, SMTP, RTMP และ RTSP Wget รองรับ HTTP, HTTPS และ FTP เท่านั้น

  • พกพาได้มากกว่า สร้างและทำงานบนแพลตฟอร์มจำนวนมากมากกว่าcurl wgetตัวอย่างเช่น: OS / 400, TPF และแพลตฟอร์ม "แปลกใหม่" อื่น ๆ ที่ไม่ใช่โคลน Unix ที่อยู่ตรงหน้า

  • ห้องสมุด SSL มากขึ้นและสนับสนุน curlสามารถสร้างขึ้นด้วยหนึ่งในสิบเอ็ด (11!) ห้องสมุด SSL / TLS ที่แตกต่างกันและให้การควบคุมที่มากขึ้นและการสนับสนุนที่กว้างขึ้นสำหรับรายละเอียดโปรโตคอล curlรองรับการตรึงกุญแจสาธารณะ

  • HTTP รับรองความถูกต้อง curlรองรับวิธีการพิสูจน์ตัวตน HTTP เพิ่มเติมโดยเฉพาะผ่านพร็อกซี HTTP: Basic, Digest, NTLM และ Negotiate

  • ถุงเท้า curlรองรับโปรโตคอล SOCKS หลายรุ่นสำหรับการเข้าถึงพร็อกซี

  • แบบสองทิศทาง curlมีความสามารถในการอัพโหลดและส่ง wgetเสนอการสนับสนุน HTTP POST ธรรมดาเท่านั้น

  • HTTP multipart / form-data ส่งซึ่งอนุญาตให้ผู้ใช้ทำการ HTTP "อัพโหลด" และเลียนแบบเบราว์เซอร์ทั่วไปและทำ HTTP อัตโนมัติในขอบเขตที่กว้างขึ้น

  • curlรองรับgzipและขยายการเข้ารหัสเนื้อหาและทำการคลายการบีบอัดอัตโนมัติ

  • curl เสนอและดำเนินการคลายการบีบอัด HTTP ที่เข้ารหัสโอน, wget ไม่ได้

  • curl รองรับ HTTP / 2 และรองรับการเชื่อมต่อแบบดูอัลสแต็กโดยใช้ Happy Eyeballs

  • กิจกรรมมากนักพัฒนามากขึ้น ในขณะที่สิ่งนี้สามารถนำมาถกเถียงกันได้ฉันจะพิจารณาตัวชี้วัดสามตัวที่นี่: กิจกรรมการส่งจดหมายรหัสความถี่แหล่งกำเนิดและความถี่ที่วางจำหน่าย ใครก็ตามที่ติดตามโครงการทั้งสองนี้จะเห็นได้ว่าโครงการ curl นั้นมีอัตราการเติบโตที่สูงขึ้นมากในทุก ๆ ด้านและเป็นเวลามากกว่า 10 ปี เปรียบเทียบกับ openhub


wget

  • wgetเป็นบรรทัดคำสั่งเท่านั้น ไม่มีห้องสมุด

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

  • เก่ากว่า wgetมีร่องรอยย้อนกลับไปปี 1995 ในขณะที่curlสามารถติดตามย้อนหลังได้ไม่เกินปลายปี 1996

  • จีพี wgetคือ 100% GPL v3 curl ได้รับใบอนุญาตจาก MIT

  • GNU wgetเป็นส่วนหนึ่งของโครงการ GNU และลิขสิทธิ์ทั้งหมดถูกกำหนดให้กับ FSF โครงการ curl เป็นโครงการแบบสแตนด์อโลนและเป็นอิสระโดยไม่มีการเลี้ยงดูองค์กร แต่อย่างใดโดยแดเนียลเป็นเจ้าของลิขสิทธิ์เกือบทั้งหมด

  • wgetไม่จำเป็นต้องมีตัวเลือกพิเศษเพียงดาวน์โหลด URL ระยะไกลไปยังแฟ้มท้องถิ่นในขณะที่curlต้องใช้หรือ-o-O

  • wget สนับสนุนรายการส่วนต่อท้ายสาธารณะสำหรับการจัดการโดเมนคุกกี้ curl ไม่

  • wget รองรับเฉพาะ GnuTLS หรือ OpenSSL สำหรับการสนับสนุน SSL / TLS

  • wget สนับสนุนเฉพาะการรับรองความถูกต้องเบื้องต้นเป็นประเภทการรับรองความถูกต้องเท่านั้นผ่านพร็อกซี HTTP

  • wget ไม่มีการรองรับ SOCKS

  • ความสามารถในการกู้คืนจากการถ่ายโอนที่เสียก่อนกำหนดและการดาวน์โหลดต่อไม่มีข้อ จำกัด

  • wget สามารถพิมพ์โดยใช้เพียงมือซ้ายบนแป้นพิมพ์ qwerty!


1
ใช่ wget นั้นยอดเยี่ยมสำหรับการทำมิเรอร์!
joeytwiddle

1
"โครงการขดเป็นแบบสแตนด์อโลนและเป็นอิสระโดยไม่ต้องมีการเลี้ยงดูองค์กร แต่อย่างใดโดยแดเนียลเป็นเจ้าของลิขสิทธิ์เกือบทั้งหมด" ไม่แน่ใจว่าเป็นสิ่งที่ไม่ดี ...
บาร์บีคิว

"ความสามารถในการกู้คืนจากการถ่ายโอนที่เสียก่อนกำหนดและการดาวน์โหลดต่อไม่มีความสอดคล้องกัน" ฉันเข้าใจประโยคนี้ผิดหรือเปล่า? curl -C -การดาวน์โหลดไม่ทำงานต่อหรือไม่
Siyuan Ren

1
ทำไมคุณแนะนำwget ? แม้หลังจากดูการเปรียบเทียบที่คุณเขียนด้วยตัวเองCurl ก็ฟังดูเหนือกว่า wget can be typed in using only the left hand on a qwerty keyboard!, WTF ?? wget requires no extra options to simply download a remote URL to a local file, while curl requires -o or -O.
Anmol Singh Jaggi

2
ขนาดมีความสำคัญเช่นกัน: ในภาพอูบุนตูสดขนาด wget คือ 2M เทียบกับ curl 5M อัดแน่น (ด้วย deps, x3 รวมทั้งหมดแยก)
Eran W

19

มีเครื่องมือมากมายที่สามารถดาวน์โหลดเป็นเหมือนcurl, snarf, wget, pavuk, fget, fetch, lftp, aria2, HTTrackฯลฯ ใช้มันตามความต้องการของคุณและที่มีคุณต้องการที่จะใช้ร่วมกับการดาวน์โหลด ตรวจสอบตารางคุณสมบัติ และใช้ตามความเหมาะสม

ขด:

  • Curl รองรับโปรโตคอล FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, ไฟล์, POP3, IMAP, SMTP, RTMP และ RTSP มากขึ้น
  • Curl สนับสนุนไลบรารี SSL เพิ่มเติม
  • Curl รองรับวิธีการพิสูจน์ตัวตน HTTP เพิ่มเติมโดยเฉพาะอย่างยิ่งผ่านพร็อกซี HTTP: Basic, Digest, NTLM และ Negotiate
  • Curl ขับเคลื่อนโดยไลบรารี libcurl -a ข้ามแพลตฟอร์มด้วย API ที่เสถียรซึ่งแต่ละคนและทุกคนสามารถใช้ได้

Wget:

  • ในขณะที่ wget รองรับ HTTP, HTTPS และ FTP
  • Wget รองรับเฉพาะ GnuTLS หรือ OpenSSL สำหรับการสนับสนุน SSL / TLS
  • Wget รองรับเฉพาะการตรวจสอบขั้นพื้นฐานเป็นประเภทการรับรองความถูกต้องผ่านพร็อกซี HTTP
  • Wget เป็นเครื่องมือบรรทัดคำสั่งเท่านั้นไม่มีไลบรารี

ทรัพยากรที่สำคัญสำหรับข้อมูลเพิ่มเติม:


"wget ​​เป็นเครื่องมือบรรทัดคำสั่งเท่านั้นที่มีไลบรารีรู้" ฉันไม่เข้าใจบรรทัดนั้น
Lucio

3

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


2

มีความแตกต่างระหว่าง wget และขดซึ่งฉันคิดว่าเป็นสิ่งสำคัญ

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

ในทางตรงกันข้าม Curl นั้นเป็นส่วนหน้าของเทอร์มินัลสำหรับไลบรารี libcurl อันทรงพลัง Libcurl มีชุดเครื่องมือที่ทรงพลังมากสำหรับการทำงานกับ URL ในทุกรูปแบบและทุกรสชาติและสามารถใช้ได้กับเกือบทุกภาษาและแพลตฟอร์ม Curl ช่วยให้คุณสามารถใช้ไลบรารีนี้ในเชลล์สคริปต์ได้

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