Cara Zip atau Unzip Fail Dari Terminal Linux

Fail ZIP adalah arkib sejagat yang biasa digunakan pada sistem Windows, macOS, dan bahkan Linux. Anda boleh membuat arkib zip atau membuka fail dari satu dengan beberapa perintah terminal Linux yang biasa.
Format Fail Arkib Mampatan ZIP
Terima kasih kepada dominasi format ZIP di alam Windows, fail ZIP mungkin merupakan bentuk arkib termampat yang paling biasa di dunia.
Walaupun fail .tar.gz dan tar.bz2 biasa di Linux, pengguna Windows mungkin akan menghantar anda arkib dalam format ZIP. Dan, jika anda ingin mengarkibkan beberapa fail dan menghantarnya ke pengguna Windows, format ZIP akan menjadi penyelesaian paling mudah dan paling serasi untuk semua orang.
BERKAITAN: Cara Mengekstrak Fail Dari Fail .tar.gz atau .tar.bz2 di Linux
zip, unzip, dan Utiliti Lain
Anda mungkin sudah mengetahui bahawa sistem operasi seperti Linux dan Unix seperti macOS mempunyai alat untuk membolehkan anda membuat fail ZIP dan mengekstrak fail dari mereka, dipanggil zip
dan unzip
. Tetapi ada sebuah keluarga utiliti yang berkaitan seperti zipcloak
, zipdetails
, zipsplit
, dan zipinfo
.
Kami memeriksa sebilangan Linux untuk melihat sama ada ia memasukkan utiliti ini dalam pemasangan standard. Semua utiliti ada di Ubuntu 19.04, 18.10, dan 18.04. Mereka juga hadir di Manjaro 18.04. Fedora 29 termasuk zip
dan unzip
, tetapi tidak ada utiliti lain dan itu juga berlaku untuk CentOS.
Untuk memasang elemen yang hilang di Fedora 29, gunakan arahan berikut:
sudo dnf pasang perl-IO-Compress
Untuk memasang elemen yang hilang di CentOS 7, gunakan arahan berikut:
sudo yum pasang perl-IO-Compress
Sekiranya ada utiliti zip yang hilang dari sebaran Linux yang tidak disebutkan di atas, gunakan alat pengurusan pakej edaran Linux untuk memasang pakej yang diperlukan.
Cara Membuat Fail ZIP dengan Perintah zip
Untuk membuat fail ZIP, anda perlu memberitahu zip
nama fail arkib dan fail mana yang perlu disertakan di dalamnya. Anda tidak perlu menambahkan pelanjutan ".zip" ke nama arkib, tetapi tidak ada salahnya jika anda melakukannya.
Untuk membuat fail yang dipanggil yang source_code.zip
mengandungi semua fail kod sumber C dan fail tajuk dalam direktori semasa, anda akan menggunakan perintah ini:
zip source_code * .c * .h
Setiap fail disenaraikan semasa ia ditambahkan. Nama fail dan jumlah pemampatan yang dicapai pada fail tersebut ditunjukkan.
Sekiranya anda melihat arkib ZIP baru, anda dapat melihat bahawa sambungan fail ".zip" telah ditambahkan secara automatik oleh zip
.
ls -l source_code.zip
Sekiranya anda tidak mahu melihat output zip
semasa fail ZIP dibuat, gunakan pilihan -q
(senyap).
zip -q source_code * .c * .h
Termasuk Direktori dalam Fail ZIP
Untuk memasukkan sub-direktori dalam fail ZIP, gunakan pilihan -r
(rekursif) dan sertakan nama sub-direktori pada baris perintah. Untuk membuat fail ZIP seperti sebelumnya dan juga menyertakan sub-direktori arkib, gunakan arahan ini.
zip -r -q source_code archive / * .c * .h
Untuk memperhatikan orang yang akan mengekstrak fail dari fail ZIP yang anda buat, sering sopan untuk membuat fail ZIP dengan fail di dalamnya terkandung dalam direktori. Apabila orang yang menerima fail ZIP mengekstraknya, semua fail diletakkan dengan kemas di dalam direktori di komputer mereka.
Dalam arahan berikut, kita akan mengarkibkan work
direktori dan semua sub-direktori. Ambil perhatian bahawa arahan ini ialah kenyataan yang dikeluarkan dari direktori induk daripada work
folder.
zip -r -q sumber_kod kerja /
Menetapkan Tahap Mampatan
Anda boleh menetapkan berapa banyak pemampatan yang diterapkan pada fail kerana ia ditambahkan ke arkib ZIP. Julatnya adalah dari 0 hingga 9, dengan 0 sama sekali tidak mampatan. Semakin tinggi mampatan, semakin lama masa yang diperlukan untuk membuat fail ZIP. Untuk fail ZIP bersaiz sederhana, perbezaan masa bukanlah hukuman yang signifikan. Tetapi kemudian, untuk fail ZIP bersaiz sederhana, pemampatan lalai (tahap 6) mungkin cukup baik.
Untuk zip
menggunakan tahap pemampatan tertentu, berikan angka sebagai pilihan pada baris perintah, dengan tanda "-", seperti ini:
zip -0 -r -q sumber_kod kerja /
Tahap mampatan lalai adalah 6. Tidak perlu memberikan -6
pilihan, tetapi tidak ada salahnya jika anda melakukannya.
zip -r -q sumber_kod kerja /
Tahap pemampatan maksimum adalah tahap 9.
zip -9 -r -q sumber_kod kerja /
Dengan pemilihan fail dan direktori yang diarkibkan di sini, perbezaan antara tiada pemampatan (tahap 0) dan pemampatan lalai (tahap 6) adalah 400K. Perbezaan antara mampatan lalai dan tahap mampatan tertinggi (tahap 9) hanya 4K.
Itu mungkin tidak banyak, tetapi untuk arkib yang mengandungi beratus-ratus atau bahkan ribuan fail, sejumlah kecil pemampatan tambahan bagi setiap fail akan menambah penjimatan ruang yang bermanfaat.
Menambah Kata Laluan ke Fail ZIP
Menambah kata laluan ke fail ZIP adalah mudah. Gunakan pilihan -e
(enkripsi) dan anda akan diminta memasukkan kata laluan anda dan memasukkannya semula untuk pengesahan.
zip -e -r -q sumber_kod kerja /
Cara Unzip ZIP File Dengan arahan unzip
Untuk mengekstrak fail dari fail ZIP, gunakan arahan unzip, dan berikan nama fail ZIP. Perhatikan bahawa anda tidak perlu untuk menyediakan ".zip" lanjutan.
unzip source_code.zip
Semasa fail diekstrak, fail tersebut disenaraikan ke tetingkap terminal.
Fail ZIP tidak mengandungi butiran pemilikan fail. Semua fail yang diekstrak mempunyai pemilik yang ditetapkan kepada pengguna yang mengekstraknya.
Sama seperti zip
, unzip
mempunyai pilihan -q
(senyap), sehingga anda tidak perlu melihat senarai fail kerana fail diekstrak.
unzip -q source_code.zip
Mengekstrak Fail ke Direktori Sasaran
Untuk mendapatkan file yang diekstrak dalam direktori tertentu, gunakan opsi -d
(direktori), dan berikan jalan ke direktori yang ingin Anda arkibkan.
unzip -q source_code.zip -d ./development
Ekstrak Fail ZIP yang Dilindungi Kata Laluan
Sekiranya fail ZIP telah dibuat dengan kata laluan, unzip
akan meminta kata laluan. Sekiranya anda tidak memberikan kata laluan yang betul, unzip
tidak akan mengekstrak fail.
unzip -q source_code.zip
Sekiranya anda tidak peduli kata laluan anda dilihat oleh orang lain — atau kata laluan itu tidak disimpan dalam sejarah perintah anda — anda boleh memberikan kata laluan pada baris perintah dengan pilihan -P
(kata laluan). (Anda mesti menggunakan modal "P.")
unzip -P limapuluh.treacle.cutlass -q source_code.zip
Tidak termasuk Fail
Sekiranya anda tidak mahu mengekstrak fail atau kumpulan fail tertentu, gunakan pilihan -x
(kecualikan). Dalam contoh ini, kami ingin mengekstrak semua fail selain dari yang diakhiri dengan sambungan ".h".
unzip -q source_code.zip -x * .h
Menimpa Fail
Katakan anda telah mengekstrak arkib tetapi anda telah memadam beberapa fail yang diekstrak secara tidak sengaja.
Pembaikan cepat untuk mengekstrak fail sekali lagi. Tetapi jika anda cuba mengekstrak fail ZIP di direktori yang sama seperti sebelumnya, unzip
akan meminta keputusan untuk menimpa fail. Ini akan menjangkakan salah satu tindak balas berikut.
Selain daripada r
respons (ganti nama), respons ini peka huruf besar kecil.
- y: Ya, ganti fail ini
- n: Tidak, jangan ganti fail ini
- J: Semua, ganti semua fail
- N: Tiada, ganti fail mana pun
- r: Namakan semula, ekstrak fail ini tetapi beri nama baru. Anda akan diminta mendapatkan nama baru.
Untuk memaksa unzip
menimpa fail yang ada gunakan pilihan -o
(ganti)
unzip -o -q source_code.zip
Cara paling berkesan untuk mengganti fail yang hilang adalah dengan unzip
hanya mengekstrak fail dalam arkib yang tidak ada di direktori sasaran. Untuk melakukan ini, gunakan pilihan -n
(tidak pernah menimpa).
unzip -n source_code.zip
Melihat Dalam Fail ZIP
Selalunya berguna dan bermanfaat untuk melihat senarai fail di dalam fail ZIP sebelum anda mengekstraknya. Anda boleh melakukannya dengan pilihan -l
(arkib senarai). Ia disalurkan less
untuk menjadikan output dapat dikendalikan.
unzip -l source_code.zip | kurang
Output menunjukkan direktori dan fail dalam fail ZIP, panjangnya dan masa dan tarikh ia ditambahkan ke arkib. Tekan "q" untuk berhenti dari less
.
Ada cara lain untuk mengintip di dalam fail ZIP yang memberikan pelbagai jenis maklumat, seperti yang akan kita lihat.
Tambahkan Kata Laluan Dengan Perintah zipcloak
Sekiranya anda telah membuat fail ZIP tetapi terlupa untuk menambahkan kata laluan, apa yang boleh anda lakukan? Anda boleh menambahkan kata laluan ke fail ZIP dengan cepat menggunakan zipcloak
perintah. Masukkan nama fail ZIP pada baris arahan. Anda akan diminta kata laluan. Anda perlu mengesahkan kata laluan dengan memasukkannya kali kedua.
zipcloak source_code.zip
Lihat Perincian Fail Dengan Perintah zipdetail
The zipdetails
arahan akan menunjukkan kepada anda banyak maklumat mengenai fail ZIP. Satu-satunya cara yang masuk akal untuk menangani jumlah output yang dapat diberikan oleh arahan ini adalah dengan melengkapkannya less
.
zipdetails source_code.zip | kurang
Perhatikan bahawa maklumat tersebut akan merangkumi nama fail walaupun fail ZIP dilindungi kata laluan. Jenis maklumat ini disimpan dalam fail ZIP sebagai meta-data dan bukan merupakan sebahagian daripada data yang dienkripsi.
Cari Di Dalam Fail Dengan Perintah zipgrep
The zipgrep
arahan membolehkan anda untuk mencari dalam fail dalam fail ZIP. Dalam contoh berikut, kami ingin mengetahui fail mana dalam fail ZIP yang mempunyai teks "keyval.h" di dalamnya.
zipgrep keyval.h source_code.zip
Kita dapat melihat bahawa fail-fail tersebut slang.c
dan getval.c
mengandungi string "keyval.h". Kita juga dapat melihat bahawa terdapat dua salinan setiap fail ini dalam direktori yang berlainan dalam fail ZIP.
Lihat Maklumat Dengan Perintah zipinfo
The zipinfo
arahan memberikan anda satu lagi cara untuk melihat bahagian dalam fail ZIP. Seperti sebelumnya, kami menyalurkan output melalui less
.
zipinfo source_code.zip | kurang
Dari kiri ke kanan output menunjukkan:
- Kebenaran fail
- Versi alat yang digunakan untuk membuat fail ZIP
- Saiz fail asal
- Penerangan fail (diterangkan di bawah)
- Kaedah pemampatan (deflasi, dalam kes ini)
- Cap data dan masa
- Nama fail dan direktori apa pun
Deskriptor fail terdiri daripada dua watak. Karakter pertama akan menjadi "t" atau "b" untuk menunjukkan teks atau fail binari. Sekiranya huruf besar, fail akan disulitkan. Watak kedua mungkin satu daripada empat watak. Karakter ini menunjukkan jenis meta-data yang disertakan untuk fail ini: tidak ada, tajuk tempatan yang diperluas, "bidang tambahan", atau keduanya.
- -: Sekiranya tidak ada, watak akan menjadi tanda hubung
- l: jika ada tajuk tempatan yang diperluas tetapi tidak ada bidang tambahan
- x: jika tidak ada tajuk tempatan yang diperluas tetapi ada bidang tambahan
- X: jika ada tajuk tempatan yang diperluas dan ada bidang tambahan
Pisahkan Fail Dengan Perintah zipsplit
Sekiranya anda perlu menghantar fail ZIP kepada orang lain tetapi terdapat sekatan ukuran atau masalah dengan penghantaran fail, anda boleh menggunakan zipsplit
perintah untuk membelah fail ZIP yang asli menjadi sekumpulan fail ZIP yang lebih kecil.
Pilihan -n
(ukuran) membolehkan anda menetapkan ukuran maksimum untuk setiap fail ZIP baru. Dalam contoh ini, kami membahagikan source_code.zip
fail. Kami tidak mahu mana-mana fail ZIP baru lebih besar daripada 100 KB (102400 byte).
zipsplit -n 102400 source_code.zip
Ukuran yang anda pilih tidak boleh lebih kecil dari ukuran file dalam file ZIP.
Dengan menggunakan arahan ini, anda boleh membuat fail ZIP anda sendiri, membuka zip fail ZIP yang anda terima, dan melakukan pelbagai operasi lain padanya tanpa perlu meninggalkan terminal Linux.