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.