GNU/Linux >> Belajar Linux >  >> Linux

Curl Mengunduh HTML Alih-alih File Zip yang Sebenarnya? Inilah yang Harus Dilakukan

Curl adalah alat yang sangat baik untuk mengunduh file di terminal Linux.

Sintaks biasa untuk mengunduh file dengan nama yang sama dengan file aslinya cukup sederhana:

curl -O URL_of_the_file

Ini bekerja sebagian besar waktu. Namun, Anda akan melihat bahwa terkadang saat Anda mengunduh file dari GitHub atau SourceForge, file tersebut tidak mengambil file yang benar.

Sebagai contoh, saya mencoba mengunduh skrip archinstall dalam format tar gz. File berada di halaman rilis.

Jika saya membuka tautan kode sumber ini di browser, saya mendapatkan kode sumber dalam format .tar.gz.

Namun, jika saya menggunakan terminal untuk mengunduh file yang sama menggunakan perintah curl, saya mendapatkan file kecil yang tidak dalam format arsip yang benar.

tar -zxvf v2.4.2.tar.gz 

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

Ketika saya menjalankan perintah file untuk mengetahui jenis file yang tepat, itu memberi tahu saya bahwa itu adalah dokumen HTML.

file v2.4.2.tar.gz 
v2.4.2.tar.gz: HTML document, ASCII text, with no line terminators

Dokumen HTML bukannya arsip zip atau tarball? Dimana masalahnya? Mari saya tunjukkan perbaikan cepatnya.

Mengunduh file arsip dengan curl dengan benar

Masalahnya di sini adalah bahwa URL yang Anda miliki dialihkan ke file arsip yang sebenarnya. Untuk mendapatkannya, Anda perlu menggunakan opsi tambahan.

curl -JLO URL_of_the_file

Pilihannya bisa dalam urutan apa pun. Lebih mudah mengingat J LO (Jennifer Lopez).

Berikut penjelasan singkat tentang opsi berdasarkan halaman manual dari perintah curl.

  • J:Opsi ini memberi tahu opsi -O, --remote-name untuk menggunakan  nama file Content-Disposition yang ditentukan server alih-alih mengekstrak nama file dari URL.
  • L:Jika server melaporkan bahwa halaman yang diminta telah dipindahkan ke lokasi yang berbeda (ditunjukkan dengan header Location:dan kode respons 3XX), opsi ini akan membuat curl mengulang permintaan di tempat baru.
  • O:Dengan opsi ini, Anda tidak perlu menentukan nama file keluaran untuk unduhan.

Seperti yang Anda lihat pada tangkapan layar di bawah, kali ini saya dapat mengunduh file yang benar dengan opsi curl -JLO.

Kiat bonus:Apakah Anda perlu masuk?

Ini berfungsi untuk file publik. Tetapi jika Anda mencoba mengunduh file dari repositori pribadi atau GitLab, Anda mungkin melihat pesan tentang pengalihan ke halaman login.

<html><body>You are being <a href="https://gitlab.com/users/sign_in">redirected</a>.</body></html>

Dalam kasus seperti itu, berikan token API dengan opsi -H.

Saya harap tip kecil cepat ini membantu Anda mengunduh file arsip dengan Curl dengan benar. Beri tahu saya jika Anda masih menghadapi masalah dengan unduhan curl.


Linux
  1. Apa yang setara dengan perintah File Linux untuk windows?

  2. Sistem file apa di Linux yang menyimpan waktu pembuatan?

  3. Berapa batas ukuran /etc/hosts?

  1. Apa Arti Atribut 's' Dalam Izin File ??

  2. Apa Penggunaan Sah dari Perintah `sentuh`?

  3. Apa file default untuk `hostname`?

  1. Linux – Sistem File Apa di Linux yang Menyimpan Waktu Pembuatan?

  2. Apa yang Dirujuk oleh Penerjemah yang Dilaporkan Oleh `file`?

  3. Unzip Mengira File Zip Adalah Bom Zip?