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 zipdan 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 zipdan 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 zipnama 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.zipmengandungi 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 zipsemasa 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 workdirektori dan semua sub-direktori. Ambil perhatian bahawa arahan ini ialah kenyataan yang dikeluarkan dari direktori induk daripada workfolder.

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 zipmenggunakan 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 -6pilihan, 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, unzipakan meminta kata laluan. Sekiranya anda tidak memberikan kata laluan yang betul,  unziptidak 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, unzipakan meminta keputusan untuk menimpa fail. Ini akan menjangkakan salah satu tindak balas berikut.

Selain daripada rrespons (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 unzipmenimpa fail yang ada gunakan pilihan -o(ganti)

unzip -o -q source_code.zip

Cara paling berkesan untuk mengganti fail yang hilang adalah dengan unziphanya 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 lessuntuk 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 zipcloakperintah. 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 zipdetailsarahan 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 zipgreparahan 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.cdan getval.cmengandungi 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 zipinfoarahan 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 zipsplitperintah 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.zipfail. 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.