Perintah bzip2 Linux: kompres berkas dan pertahankan sumber
Perintah bzip2 mengompresi berkas menjadi format .bz2 dan secara bawaan mengganti berkas sumber dengan hasil kompresi. Gunakan -k untuk mempertahankan sumber atau -c untuk mengirim hasil ke keluaran standar dengan nama terpisah.
bzip2 menghasilkan kompresi tersendiri untuk setiap berkas masukan. Alat ini tidak mengemas struktur direktori menjadi satu arsip; untuk kumpulan berkas dan folder, gunakan tar untuk membuat dan memeriksa arsip bersama kompresi bzip2.
Sintaks dan persiapan
bzip2 [opsi] [berkas ...]
opsi dan berkas adalah penanda. Periksa man bzip2 untuk perilaku versi yang terpasang. Siapkan data.csv yang dapat dibaca di direktori percobaan, ruang penyimpanan yang cukup, dan nama keluaran yang belum digunakan. Contoh dapat dicoba dengan berkas CSV kecil buatan sendiri; jangan memakai satu-satunya salinan data penting.
Contoh -k membuat data.csv.bz2. Contoh -c memakai nama data-copy.csv.bz2 sehingga dapat dijalankan sesudahnya tanpa berbenturan. Pemeriksaan -t membutuhkan data.csv.bz2 yang sudah dibuat pada contoh pertama. Variabel lingkungan BZIP2 dan BZIP juga dapat memuat opsi bawaan; periksa bila perilaku alat berbeda dari yang diharapkan.
Mengompresi sambil mempertahankan sumber
bzip2 -k data.csv
Hasil yang diharapkan adalah data.csv tetap ada dan data.csv.bz2 dibuat. bzip2 biasanya tidak menampilkan pesan sukses. Periksa status keluar dan keberadaan kedua berkas sebelum melanjutkan.
Tanpa -k atau -c, kompresi yang berhasil biasanya menghapus berkas sumber dan meninggalkan versi .bz2. bzip2 menolak keluaran yang sudah ada secara bawaan. Jika mengulang contoh ini, gunakan direktori percobaan baru atau periksa salinan lama terlebih dahulu; jangan langsung menambahkan -f untuk memaksa penimpaan.
Menyimpan hasil dengan nama berbeda
bzip2 -c data.csv > data-copy.csv.bz2
-c menulis data terkompresi ke keluaran standar dan mempertahankan data.csv. Shell mengarahkan aliran itu ke data-copy.csv.bz2 melalui >. Keluaran bzip2 berupa data biner, sehingga sebaiknya diarahkan ke berkas, bukan dibaca sebagai teks pada terminal.
Operator > dapat mengosongkan berkas tujuan sebelum bzip2 mulai berjalan. Penolakan penimpaan bawaan bzip2 tidak melindungi tujuan pengalihan shell. Pastikan tujuannya baru atau memang boleh diganti, dan jangan arahkan keluaran ke data.csv sendiri karena masukan dapat terpotong lebih dahulu. Jika kompresi gagal, keluaran dapat kosong atau tidak lengkap.
Memeriksa integritas data terkompresi
bzip2 -t data.csv.bz2
-t melakukan percobaan dekompresi lalu membuang hasilnya, tanpa membuat berkas hasil dekompresi. Berkas yang lolos pemeriksaan biasanya tidak menghasilkan keluaran. Pada Bash, jalankan echo $? segera setelah perintah tersebut untuk memeriksa status terakhir: 0 berarti selesai normal, 1 masalah lingkungan seperti berkas tidak ditemukan, 2 data terkompresi rusak, dan 3 galat konsistensi internal.
Pemeriksaan integritas bukan bukti asal pengirim atau bahwa berkas memuat dokumen yang Anda maksud. Untuk data penting, uji pemulihan dan cocokkan isinya dengan pembanding yang benar. Pertahankan cadangan terpisah; keberadaan nama .bz2 saja belum membuktikan berkas dapat dipulihkan.
Contoh lengkap untuk memeriksa hasil
Siapkan note.txt berisi teks pendek, misalnya hello diikuti satu baris baru. Jalankan dari direktori yang sama dengan note.txt dan pastikan note.txt.bz2 belum ada:
bzip2 -c note.txt > note.txt.bz2
bzip2 -t note.txt.bz2
ls note.txt*
Dua perintah pertama biasanya tidak mencetak pesan jika berhasil. Perintah ls menampilkan nama yang sesuai pola note.txt*, misalnya:
note.txt note.txt.bz2
Jarak dan susunan daftar dapat berbeda menurut lingkungan. Sumber note.txt tetap tersedia karena kompresi menggunakan -c. Blok tersebut berisi tiga perintah, sehingga status terakhir setelah semuanya selesai adalah status ls. Periksa status bzip2 segera setelah setiap baris atau jalankan satu per satu agar kegagalan kompresi atau pemeriksaan tidak tertutup oleh keberhasilan ls.
Untuk memulihkan tanpa mengganti berkas .bz2, gunakan bzip2 -dc note.txt.bz2 > restored-note.txt dengan tujuan yang belum ada. Setelah status keluar 0, bandingkan restored-note.txt dengan note.txt, misalnya memakai cmp note.txt restored-note.txt. cmp biasanya diam dengan status 0 jika isinya identik; status 1 menunjukkan perbedaan. Hindari pengalihan ke berkas sumber dan jangan menganggap hasil parsial sebagai pemulihan yang berhasil.
Opsi utama dan ukuran blok
| Opsi | Fungsi dan batasnya |
|---|---|
-k |
Mempertahankan berkas masukan saat kompresi atau dekompresi. |
-c |
Mengirim hasil ke keluaran standar; pengalihan ke berkas dilakukan oleh shell. |
-t |
Menguji integritas aliran terkompresi tanpa menyimpan hasil dekompresi. |
-1 ... -9 |
Memilih ukuran blok kompresi dari 100 kB hingga 900 kB. -9 adalah bawaan; pilihan ini tidak mengubah ukuran blok saat dekompresi. |
-v |
Menampilkan informasi pemrosesan dan rasio kompresi. |
Blok lebih besar dapat meningkatkan kompresi, tetapi juga membutuhkan lebih banyak memori; hasilnya bergantung pada data. Opsi tersebut bukan janji ukuran atau kecepatan tertentu. Berkas sangat kecil atau data yang sudah terkompresi dapat menjadi lebih besar. Kompresi juga tidak mengenkripsi isi.
Menggabungkan direktori dengan tar
bzip2 data/ tidak mengemas direktori. Untuk membuat satu arsip yang mempertahankan nama anggota dan struktur folder, gunakan tar -cjf data.tar.bz2 data/. Pastikan data/ ada dan letakkan arsip keluaran di luar direktori yang sedang diarsipkan.
Periksa daftar dengan tar -tjf data.tar.bz2. Untuk ekstraksi, siapkan direktori restore/ yang kosong, lalu gunakan tar -xjf data.tar.bz2 -C restore/. Dalam contoh ini anggota berada di bawah restore/data/. Menjalankan bzip2 -d pada .tar.bz2 hanya melepas lapisan kompresi dan menghasilkan .tar; anggota arsip belum diekstrak.
FAQ
Apakah bzip2 beberapa berkas menghasilkan satu arsip?
Tidak. Dengan nama berkas masukan biasa, setiap berkas mendapat hasil .bz2 tersendiri. Mengirim beberapa masukan melalui -c dapat menggabungkan aliran kompresi, tetapi tidak menyimpan struktur dan nama anggota seperti tar.
Mengapa hasil kompresi yang sudah ada terhapus ketika memakai >?
Shell menangani pengalihan sebelum bzip2 memproses masukan. Perlindungan penimpaan bzip2 tidak berlaku untuk berkas yang dibuka oleh shell. Pilih nama baru dan periksa tujuan sebelum menjalankan perintah.
Dokumentasi resmi
Lihat manual resmi bzip2: opsi, status keluar, dan kebutuhan memori untuk rincian format serta perilaku alat.




