Saya memiliki mesin dengan penggunaan hard disk 90%. Saya ingin mengompres file log 500+ ke file baru yang lebih kecil. Namun, hard disk terlalu kecil untuk menyimpan file asli dan yang terkompresi.
Jadi yang saya butuhkan adalah mengompres semua file log menjadi satu file baru satu per satu, menghapus setiap dokumen asli yang dikompres.
Bagaimana saya bisa melakukannya di Linux?
Jawaban:
gzip
ataubzip2
akan mengkompres file dan menghapus yang tidak dikompres secara otomatis (ini adalah perilaku default mereka).Namun, perlu diingat bahwa saat proses kompresi, kedua file akan ada.
Jika Anda ingin mengompres file log (yaitu: file yang berisi teks), Anda dapat memilih
bzip2
, karena memiliki rasio yang lebih baik untuk file teks.Perbandingan dan contoh:
UPDATE sebagai @Jjoao mengatakan kepada saya dalam komentar, menarik,
xz
tampaknya memiliki rasio terbaik pada file polos dengan pilihan default:Untuk informasi lebih lanjut, berikut ini adalah tolok ukur yang menarik untuk alat yang berbeda: http://binfalse.de/2011/04/04/comparison-of-compression/
Untuk contoh di atas, saya gunakan
-9
untuk rasio kompresi terbaik, tetapi jika waktu yang dibutuhkan untuk kompres data lebih penting daripada rasio, Anda sebaiknya tidak menggunakannya (gunakan opsi yang lebih rendah, yaitu-1
, atau sesuatu di antaranya).sumber
xz myfile
?xz
, tetapi saya akan mempertimbangkannya sekarang. Lihat pembaruan posting saya.xz -9
. Ini sangat meningkatkan memori yang diperlukan untuk kompresi / dekompresi, tanpa secara signifikan meningkatkan rasio kompresi. Halaman manual bahkan mengatakan (penekanan pada mereka) "Secara khusus, itu bukan ide yang baik untuk menggunakan -9 secara membabi buta untuk segala hal seperti itu sering dengan gzip (1) dan bzip2 (1)". Standarnyaxz -6
cukup baik, dan bahkanxz -0
/xz -1
biasanya kompres lebih baik daripadagzip -9
.-9
, tapi saya menggunakannya di sini karena saya ingin membuat semacam tolok ukur untuk rasio kompresi "pada skala yang sama". Tetapi sekali lagi, Anda sepenuhnya benar: itu ide buruk untuk digunakan secara membabi buta-9
.Saya menemukan solusi tar sendiri.
Ini menghapus file tunggal setelah dikompres ke file target.
Namun, kecepatan kompresi tidak terlalu cepat. Perintahnya terlihat seperti:
sumber
Sebagai pelengkap @apaul, saya menekankan bahwa mengompresi file satu per satu
(ganti bzip2 dengan gzip, xz, atau apa pun zip file favorit Anda) mungkin penting:
Dengan cara ini Anda masih dapat melihat (
bzcat file.bz2
), mencari (bzgrep file.bz2
), mengedit (vi file.bz2
) file yang dikompresi dan menghapus yang lebih lama bila perlu.sumber
Saya mencoba melakukan ini pada tar versi BSD. Dalam hal ini, opsi --remove-files tidak tersedia. Apa yang akhirnya saya lakukan (dan berhasil) adalah:
sumber