Apa perbedaan antara curl dan wget? [Tutup]

38

Keduanya curldan wgetdigunakan untuk mengunduh file, dll. Apakah ada alasan untuk menggunakannya?

mengintip
sumber
1
Tentukan "penggunaan yang tepat"
AB
12
Mengenai pemungutan suara untuk ditutup sebagai berbasis opini: bagaimana cara menanyakan tentang perbedaan antara dua alat mendorong jawaban berdasarkan opini?
Michael Martin-Smucker
1
@ MichaelMartin-Smucker "Seandainya saya perlu mengunduh halaman web katakanlah www.google.com, haruskah saya mencari wget atau ikal?" apa itu kalau bukan berbasis opini?
muru
2
@uru, Itu tergantung pada apa yang Anda maksud dengan "mengunduh halaman web". Jika maksud Anda mengirim permintaan http dan menerima kembali hasilnya, curl sangat ideal. Jika maksud Anda mengunduh laman, laman lain yang ditautkan, dan aset terkait, curl tidak akan berfungsi, dan wget adalah satu-satunya opsi. Ada perbedaan faktual di antara mereka yang membuat ini bukan berdasarkan pendapat.
barbekyu
3
@uru Saya kira kita hanya memiliki interpretasi berbeda dari sentimen di balik pertanyaan. Dalam interpretasi saya, sentimennya adalah: "Saya pernah mendengar tentang dua alat ini yang tampaknya melakukan hal yang sama. Apa perbedaan di antara mereka, dan kapan saya harus memilih satu di antara yang lain? Bagaimana dalam kasus khusus ini?" ... yang sepertinya pertanyaan yang masuk akal bagi saya.
Michael Martin-Smucker

Jawaban:

33

Setelah Anda mendefinisikan "penggunaan yang tepat", gunakan wget.

Mengapa? Itu sebabnya:

Rekursif! Sisi kuat utama wget dibandingkan dengan curl adalah kemampuannya untuk mengunduh secara rekursif, atau bahkan hanya mengunduh segala sesuatu yang disebut dari sumber daya jarak jauh, baik itu halaman HTML atau daftar direktori FTP.


Tak tahu malu disalin dari sini

curl

  • perpustakaan . curldidukung oleh libcurl- pustaka lintas platform dengan API stabil yang dapat digunakan oleh setiap orang. Perbedaan ini besar karena ia menciptakan sikap yang sama sekali berbeda tentang bagaimana melakukan sesuatu secara internal. Juga sedikit lebih sulit untuk membuat perpustakaan daripada alat baris perintah "belaka".

  • pipa . curlbekerja lebih seperti catperintah Unix tradisional , ia mengirim lebih banyak barang stdout, dan membaca lebih banyak dari stdincara "semuanya pipa". wgetlebih mirip cp, menggunakan analog yang sama.

  • Tembakan tunggal . curlpada dasarnya dibuat untuk melakukan transfer data single-shot. Ini hanya mentransfer URL yang ditentukan pengguna, dan tidak mengandung logika pengunduhan rekursif atau pengurai HTML apa pun.

  • Lebih banyak protokol . curlmendukung FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMB / CIFS, SMTP, RTMP dan RTSP. Wget hanya mendukung HTTP, HTTPS, dan FTP.

  • Lebih portabel . curlmembangun dan menjalankan lebih banyak platform dari pada wget. Sebagai contoh: OS / 400, TPF dan platform lebih "eksotis" lainnya yang bukan klon Unix.

  • Lebih banyak perpustakaan SSL dan dukungan SSL . curldapat dibangun dengan satu dari sebelas (11!) perpustakaan SSL / TLS yang berbeda, dan ia menawarkan lebih banyak kontrol dan dukungan yang lebih luas untuk perincian protokol. curlmendukung pinning kunci publik.

  • HTTP auth . curlmendukung lebih banyak metode otentikasi HTTP, terutama melalui proxy HTTP: Basic, Digest, NTLM dan Negotiate

  • SOCKS . curlmendukung beberapa versi protokol SOCKS untuk akses proxy

  • Dua arah . curlmenawarkan kemampuan mengunggah dan mengirim. wgethanya menawarkan dukungan HTTP POST biasa.

  • HTTP multipart / pengiriman formulir data , yang memungkinkan pengguna untuk melakukan "unggah" HTTP dan secara umum meniru browser dan melakukan otomatisasi HTTP ke tingkat yang lebih luas

  • curlmendukung gzipdan mengembangkan Content-Encoding dan melakukan dekompresi otomatis

  • curl menawarkan dan melakukan dekompresi HTTP Transfer-Encoded, wget tidak

  • curl mendukung HTTP / 2 dan terhubung dengan tumpukan ganda menggunakan Happy Eyeballs

  • Jauh lebih banyak aktivitas pengembang . Meskipun hal ini dapat diperdebatkan, saya mempertimbangkan tiga metrik di sini: aktivitas milis, frekuensi kode sumber komit dan frekuensi rilis. Siapa pun yang mengikuti kedua proyek ini dapat melihat bahwa proyek curl memiliki kecepatan yang jauh lebih tinggi di semua bidang ini, dan sudah demikian selama 10+ tahun. Bandingkan dengan openhub


wget

  • wgetadalah baris perintah saja. Tidak ada perpustakaan.

  • Rekursif ! wgetSisi kuat utama dibandingkan dengan curl adalah kemampuannya untuk mengunduh secara rekursif, atau bahkan hanya mengunduh segala sesuatu yang disebut dari sumber daya jarak jauh, baik itu halaman HTML atau daftar direktori FTP.

  • Yang lebih tua . wgettelah melacak kembali ke 1995, sementara curldapat dilacak kembali tidak lebih awal dari akhir tahun 1996.

  • GPL . wgetadalah 100% GPL v3. curl adalah lisensi MIT.

  • GNU . wgetadalah bagian dari proyek GNU dan semua hak cipta diberikan kepada FSF. Proyek curl sepenuhnya berdiri sendiri dan independen tanpa organisasi pengasuhan sama sekali dengan hampir semua hak cipta yang dimiliki oleh Daniel.

  • wgettidak memerlukan opsi tambahan untuk hanya mengunduh URL jarak jauh ke file lokal, saat curlmemerlukan -oatau -O.

  • wget mendukung Daftar Sufiks Publik untuk menangani domain cookie, curl tidak.

  • wget hanya mendukung GnuTLS atau OpenSSL untuk dukungan SSL / TLS

  • wget hanya mendukung otentikasi Dasar sebagai satu-satunya jenis otentikasi melalui proxy HTTP

  • wget tidak memiliki dukungan SOCKS

  • Kemampuannya untuk pulih dari transfer yang rusak sebelum waktunya dan melanjutkan pengunduhan tidak memiliki rekanan dalam ikal.

  • wget dapat diketik dengan hanya menggunakan tangan kiri pada keyboard qwerty!

AB
sumber
1
Ya, wget sangat bagus untuk mirroring!
joeytwiddle
1
"Proyek curl sepenuhnya berdiri sendiri dan independen tanpa organisasi pengasuhan sama sekali dengan hampir semua hak cipta yang dimiliki oleh Daniel." Tidak yakin itu hal yang buruk ...
barbecue
"Kemampuannya untuk pulih dari transfer yang rusak sebelum waktunya dan melanjutkan pengunduhan tidak memiliki mitra dalam ikal." Apakah saya salah mengerti kalimat ini? Tidak curl -C -melanjutkan unduhan yang rusak?
Siyuan Ren
1
Mengapa Anda merekomendasikan wget ? Bahkan setelah melihat perbandingan yang Anda tulis sendiri, ikal terdengar jauh lebih unggul. 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
Ukuran juga penting: pada gambar ubuntu baru, ukuran wget adalah 2M vs ikal 5M dikemas (dengan deps, x3 total dibongkar)
Eran W
19

Ada banyak alat yang dapat men-download seperti curl, snarf, wget, pavuk, fget, fetch, lftp, aria2, HTTrackdll Gunakan sesuai dengan kebutuhan Anda dan yang fitur yang ingin Anda gunakan bersama dengan men-download. Periksa tabel fitur dan gunakan yang sesuai.

Ikal:

  • Curl mendukung lebih banyak protokol FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMP dan RTSP
  • Curl mendukung lebih banyak perpustakaan SSL
  • Curl mendukung lebih banyak metode otentikasi HTTP, terutama melalui proxy HTTP: Basic, Digest, NTLM dan Negotiate
  • Curl ditenagai oleh libcurl - pustaka lintas platform dengan API stabil yang dapat digunakan oleh setiap orang

Wget:

  • Sementara wget mendukung HTTP, HTTPS dan FTP
  • Wget hanya mendukung GnuTLS atau OpenSSL untuk dukungan SSL / TLS
  • Wget hanya mendukung otentikasi Dasar sebagai satu-satunya jenis otentikasi atas proxy HTTP
  • Wget adalah alat baris perintah saja, ia tidak memiliki perpustakaan.

Sumber daya penting untuk info lebih lanjut:

pl_rock
sumber
"Wget adalah alat baris perintah hanya itu yang memiliki perpustakaan." Saya tidak mengerti kalimat itu.
Lucio
3

Mereka memiliki banyak fungsi yang sama, tetapi curlmemiliki lebih banyak opsi. Untuk wgetitu kadang-kadang mungkin cukup untuk membuka man wget, tetapi untuk curlsaya perlu mempelajari halaman web ini di browser. Saya percaya apa pun yang dapat dilakukan oleh peramban Anda, juga curldapat melakukannya.

Jos
sumber
2

Ada perbedaan lain antara wget dan curl yang menurut saya penting.

Wget adalah utilitas baris perintah yang berdiri sendiri yang dimaksudkan terutama untuk mengambil konten internet dengan cepat dan sederhana.

Curl di sisi lain pada dasarnya adalah ujung depan terminal untuk perpustakaan libcurl yang kuat. Libcurl menyediakan seperangkat alat yang sangat kuat untuk bekerja dengan URL dalam semua bentuk dan rasanya, dan tersedia untuk hampir semua bahasa dan platform. Curl pada dasarnya memberi Anda kemampuan untuk menggunakan perpustakaan ini dalam skrip shell.

panggang
sumber