Menggunakan cURL untuk Mengunduh File Jarak Jauh dari Command Line

Alat baris perintah curl yang kuat dapat digunakan untuk mengunduh file dari hampir semua server jauh. Pengguna baris perintah lama tahu ini dapat berguna untuk berbagai macam situasi, tetapi untuk menjaga hal-hal sederhana, banyak yang akan menemukan bahwa mengunduh file dengan curl seringkali dapat menjadi alternatif yang lebih cepat untuk menggunakan browser web atau klien FTP dari sisi GUI dari OS X (atau linux). Ini sangat membantu untuk situasi lokal, tetapi ada nilai tertentu jika Anda berada dalam situasi di mana Anda perlu mengunduh sesuatu ke Mac jarak jauh ketika terhubung melalui SSH.

Untuk keperluan penelusuran ini, kami akan fokus terutama pada pengunduhan file dari dua protokol HTTP dan SFTP yang biasa ditemui, meskipun harus dicatat bahwa cURL mendukung lebih banyak protokol. Meskipun curl mudah digunakan, memiliki pengetahuan tentang baris perintah dianjurkan.

Unduh File Pencocokan Tepat dengan curl -O

Menggunakan huruf besar -O dengan curl mengunduh file dari server jauh sambil mempertahankan nama file yang tepat, sintaks dasar untuk ini adalah sebagai berikut:

curl -O [url]

Ini berarti jika file URL yang ditentukan bernama "sample.zip" ia akan mengunduh dengan nama file "sample.zip", dan jika file tersebut bernama sesuatu yang sangat besar dan rumit seperti "LongExampleFileNameForOSXDaily-v-1-3-51-revisi- 515b12-readme.txt ”di server jauh, itu akan menghemat dengan nama yang sama persis di mesin lokal. Nama file yang lebih panjang sering lebih baik ditangani dengan -o flag daripada -O, yang akan segera kami alamat.

Pembaca reguler mungkin ingat bahwa kami menggunakan perintah curl -O ketika menjelaskan cara mengekstrak konten audio yang sebenarnya dari file streaming m3u.

Memulai pengunduhan dengan ikal menunjukkan persentase yang ditransfer, waktu yang dihabiskan untuk mengunduh dan waktu yang tersisa, serta kecepatan transfer.

Tangkapan layar menawarkan representasi yang lebih baik daripada contoh yang ditempelkan di bawah, tetapi terlihat seperti ini:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k

Dengan kecepatan transfer menunjukkan Anda dapat mengarahkan output dari curl ke / dev / null dan menggunakannya untuk menguji kecepatan koneksi internet, tetapi perintah wget memiliki lebih mudah dibaca dan mengikuti bar transfer sehingga wget lebih cocok untuk tugas itu.

Menyimpan File Jauh dengan Nama Berbeda dengan ikal -o

Menggunakan huruf kecil -o flag akan memungkinkan Anda untuk menentukan nama file yang berbeda untuk file yang diunduh daripada bagaimana nama itu di server jauh. Ini dapat membantu mengurangi nama file secara panjang atau hanya melabeli sesuatu sehingga lebih mudah ditemukan sendiri. Sintaks umumnya adalah:

curl -o [shortname] [url]

Misalnya, jika Anda ingin menyimpan file IPSW iOS yang Anda temukan terdaftar di server Apple tanpa nama lengkap yang panjang, Anda dapat menggunakan yang berikut:

curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw

Ini akan mengunduh file "iPhone5, 3_7.0.4_11B554a_Restore.ipsw" tetapi dinamai lebih pendek sebagai "iPhone5C-704.ipsw" yang lebih berarti.

Jika Anda lebih suka tidak menyimpan file ke direktori kerja saat ini, tentukan jalur sebagai bagian dari nama file seperti:

curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg

Mengunduh Banyak File Bersamaan dengan ikal

cURL dapat dengan mudah mengunduh banyak file secara bersamaan, yang perlu Anda lakukan hanyalah menentukan lebih dari satu URL seperti:

curl -O [URL 1] [URL 2] [URL 3]

Untuk file dengan nama berbeda, atau dihosting di server yang berbeda, atau dalam jalur direktori yang berbeda, gunakan URL lengkap, misalnya:

curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt

Di sisi lain, jika nama file yang akan diunduh menggunakan penamaan inkremental, Anda dapat menggunakan tanda kurung untuk menentukan rentang unduhan, seperti:

curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1[1-3].txt

Ini akan mengambil file fdl-1.1.txt, fd1-1.2.txt, dan fd1-1.3.txt semua pada saat yang bersamaan tanpa harus menentukan setiap URL unik. Tentu saja ini hanya berfungsi jika file berada di direktori yang sama bersama dan di domain yang sama.

Otentikasi dengan ikal

Anda juga dapat melewati otentikasi dengan cURL dengan menggunakan flag -u:

curl -u user:pass -O ftp://remote_url/file-to-download.zip

Perlu diingat bahwa riwayat bash akan menyimpan kata sandi dalam teks biasa ketika menggunakan -u dengan nama pengguna dan kata sandi yang ditentukan, sehingga ini tidak disarankan untuk sebagian besar situasi. Anda bisa mendapatkan itu dengan menempatkan ruang di depan 'curl'. Jika Anda tidak menggunakan spasi untuk awalan perintah, Anda mungkin ingin mengosongkan sejarah perintah sesudahnya agar aman.

Protokol & Penggunaan yang Didukung di Luar HTTP & FTP

Seperti yang disebutkan sebelumnya, penggunaan cURL jauh melampaui HTTP dan FTP, karena entri halaman manual curl menyebutkan protokol tambahan dalam deskripsi:

curl adalah alat untuk mentransfer data dari atau ke server, menggunakan salah satu dari
protokol yang didukung (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,
IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
TELNET dan TFTP).

Selain itu, Anda akan menemukan bahwa curl juga dapat digunakan untuk permintaan PUT dan POST, cookie, proksi, terowongan, melanjutkan unduhan, dan bahkan mengambil informasi header HTTP atau mengubah agen pengguna (secara efektif spoofing) tanpa perlu menggunakan dedicated web browser.

Seperti kebanyakan utilitas baris perintah, Anda dapat belajar lebih banyak tentang curl dengan memanggil halaman manual yang sesuai dengan perintah 'man curl'.