Perintah unzip Linux: periksa daftar dan ekstrak ZIP

Perintah unzip menampilkan daftar anggota ZIP, menguji data terkompresi, dan mengekstrak berkas. Periksa nama anggota terlebih dahulu, lalu pilih direktori tujuan yang kosong agar hasil tidak bercampur dengan berkas kerja.

Secara bawaan, unzip mengekstrak ke direktori saat ini. Gunakan -l untuk daftar, -t untuk pengujian, dan -d untuk tujuan ekstraksi. Opsi -n melewati berkas yang sudah ada, sedangkan -o menimpanya tanpa bertanya.

Sintaks dan persiapan

unzip [opsi] arsip.zip [-d direktori-tujuan]

opsi, arsip.zip, dan direktori-tujuan adalah penanda. Periksa unzip -v serta man unzip untuk versi, kemampuan, dan opsi yang terpasang. Contoh ini mengikuti Info-ZIP UnZip.

Siapkan project.zip yang dapat dibaca dan ruang penyimpanan untuk hasil ekstraksi. Untuk membuat arsip latihan sendiri, lihat zip untuk mengemas berkas dan direktori. Jangan menganggap ukuran ZIP sama dengan ruang yang dibutuhkan setelah diekstrak.

UNZIP dan UNZIPOPT dapat memuat opsi lingkungan yang mengubah perilaku bawaan, termasuk penimpaan. Periksa jika alat tidak bertindak sesuai opsi yang Anda tulis. Gunakan akun biasa untuk berkas dari sumber yang belum tepercaya.

Melihat daftar sebelum ekstraksi

unzip -l project.zip

-l menampilkan nama anggota, ukuran yang belum terkompresi, dan waktu modifikasi beserta totalnya. Periksa jumlah serta jalur berkas yang diharapkan. Jika ZIP dibuat dari direktori project/, anggota dapat memiliki awalan project/ dan akan diekstrak di bawah direktori itu.

Daftar anggota tidak membuktikan isi berkas utuh. Jalankan unzip -t project.zip untuk melakukan dekompresi percobaan di memori dan membandingkan CRC (cyclic redundancy check), yaitu nilai pemeriksaan kesalahan data, dengan nilai yang tersimpan dalam arsip. Operasi ini tidak menulis anggota sebagai berkas kerja.

Lulus pengujian bukan bukti asal pengirim atau keamanan isi. Jika arsip tidak sesuai harapan atau pengujian menghasilkan galat, periksa sumber atau salinan unduhan sebelum menggunakan hasilnya.

Mengekstrak ke direktori terpisah

mkdir -p restore
unzip project.zip -d restore/

mkdir -p memastikan restore ada, tetapi tidak mengosongkannya jika direktori tersebut sudah ada. Periksa isi restore terlebih dahulu atau gunakan direktori baru. unzip kemudian membuat struktur anggota di bawah restore/ sesuai jalur yang tersimpan.

Jika anggota bernama project/readme.txt, hasilnya berada di restore/project/readme.txt, bukan langsung restore/readme.txt. Pesan ekstraksi biasanya menampilkan nama berkas yang dibuat. Periksa status keluar dan hasilnya sebelum membuka atau memindahkan data.

ZIP masukan tetap tersedia setelah ekstraksi biasa. Jika tujuan sudah memuat nama yang sama, unzip secara bawaan meminta keputusan sebelum menimpa. Jangan memilih penimpaan semua berkas tanpa memeriksa konflik; gunakan direktori kosong untuk percobaan yang mudah dinilai.

Melewati berkas yang sudah ada

unzip -n project.zip -d restore/

-n tidak menimpa berkas yang sudah ada dan melewatinya tanpa konfirmasi. Anggota lain yang belum ada tetap dapat dibuat. Opsi ini berguna untuk menjaga salinan lama, tetapi hasil dapat berisi campuran versi lama dan baru.

-n bukan sinkronisasi dan tidak membuktikan semua isi di tujuan sama dengan arsip. Jika tujuan harus mencerminkan isi ZIP secara jelas, ekstrak ke direktori baru lalu bandingkan hasilnya. Jangan menganggap -n melindungi dari seluruh masalah jalur atau isi berkas.

Menampilkan nama anggota satu per baris

-Z mengaktifkan mode ZipInfo. Dengan -1, hanya nama anggota yang ditampilkan, satu per baris, tanpa mengekstrak berkas:

unzip -Z -1 bundle.zip

Misalnya, bundle.zip yang memuat dua anggota berikut akan menghasilkan:

docs/readme.txt
images/logo.png

Ini adalah contoh struktur, bukan daftar yang pasti ada pada setiap ZIP. Setelah mengekstrak bundle.zip ke restore-bundle/ yang baru, jalurnya menjadi restore-bundle/docs/readme.txt dan restore-bundle/images/logo.png. Gunakan unzip bundle.zip -d restore-bundle/ setelah daftar dan tujuan diperiksa.

Perhatikan jalur yang tidak Anda harapkan, komponen .., nama absolut, atau tautan simbolik, yaitu berkas yang menunjuk ke jalur lain. Direktori tujuan terpisah membantu mengatur hasil, tetapi bukan jaminan isolasi keamanan untuk arsip berbahaya. Jangan jalankan berkas dari sumber yang tidak jelas segera setelah ekstraksi.

Opsi utama

Opsi Fungsi dan batasnya
-l Menampilkan nama, ukuran, waktu, dan ringkasan anggota ZIP.
-t Menguji data terkompresi tanpa menulis hasil ekstraksi sebagai berkas.
-d direktori Menetapkan direktori tujuan ekstraksi; jalur anggota tetap ikut digunakan.
-n Melewati berkas yang sudah ada tanpa menimpanya.
-o Menimpa berkas yang sudah ada tanpa konfirmasi.

Hindari -o sebagai kebiasaan untuk mempercepat pekerjaan. Jika memang perlu menimpa, simpan salinan berkas lama terlebih dahulu dan pastikan tujuan benar. Periksa pesan saat arsip memiliki metode kompresi atau enkripsi yang tidak didukung alat Anda.

Memeriksa hasil dan menangani kegagalan

Pada Bash, jalankan echo $? segera setelah unzip untuk melihat status terakhir. Status 0 menunjukkan penyelesaian normal, sedangkan status lain perlu dibaca bersama pesan diagnostik; unzip memiliki beberapa kode galat dan peringatan. Jangan hanya melihat apakah direktori tujuan sudah dibuat.

Jika pengujian atau ekstraksi gagal, hasil tujuan mungkin baru sebagian. Simpan ZIP masukan dan periksa apakah masalahnya ada pada arsip, dukungan format, izin, atau ruang disk. Setelah masalah teratasi, gunakan tujuan baru agar hasil percobaan sebelumnya tidak menutupi berkas yang belum berhasil dipulihkan.

Untuk latihan buatan sendiri, bandingkan berkas sumber dan hasil, misalnya dengan cmp sumber.txt restore/sumber.txt jika anggota bernama sumber.txt. cmp biasanya diam dengan status 0 jika isi identik; status 1 berarti berbeda. Pengujian CRC tidak menggantikan pembandingan dengan data yang memang Anda maksud.

Penanganan nama berkas, izin, kepemilikan, dan metadata dapat berbeda menurut platform serta build alat. Periksa hasil pada lingkungan penerima jika informasi tersebut penting. Jangan menganggap arsip yang dapat dibuka selalu memulihkan seluruh atribut sistem asal.

FAQ

Bagaimana mengekstrak ZIP tanpa mengubah berkas lama?

Gunakan direktori baru yang kosong. Jika harus memakai direktori yang sudah ada, -n melewati nama yang sama, tetapi hasilnya dapat mencampurkan versi lama dan anggota baru.

Apakah unzip -t menjamin berkas aman dijalankan?

Tidak. Pengujian memeriksa data arsip terhadap nilai pemeriksaannya, bukan memverifikasi kepercayaan sumber atau keamanan program di dalamnya.

Dokumentasi

Periksa rincian opsi, variabel lingkungan, dan kode diagnostik pada manual Info-ZIP UnZip yang diterbitkan Ubuntu.