Saya sering harus mengumpulkan file log dan mengunggahnya ke server pusat (Dimiliki oleh perusahaan lain). Server pusat memiliki batas ukuran file, jadi saya mencoba membuat file sekecil mungkin yang masih dalam format zip.
Apa pengaturan terbaik untuk digunakan ketika mengompresi file teks ke format zip ketika saya hanya perlu ukuran file yang kecil?
Saya telah melakukan kompresi ultra yang jelas dan dipilih, dan saya telah memperhatikan bahwa LZMA melakukan pekerjaan yang lebih baik daripada mengempis, tetapi ada terlalu banyak permutasi pilihan lain bagi saya untuk menguji semuanya.
compression
zip
7-zip
jjnguy
sumber
sumber
Deflate
format, itu bukan file .zip "normal" lagi, melainkan file zip "extended", yang dipelopori oleh WinZip. Mereka awalnya menyimpan ekstensi sebagai .zip, untuk banyak kekhawatiran (karena kebanyakan alat penanganan zip yang normal tidak dapat mengatasinya), tetapi sebagian besar pengarsipan menggunakan .zipx sekarang untuk membedakannya dari file .zip tradisional. Jika Anda dapat menggunakan LZMA, alihkan ke .7z dan pilih PPMd - itu akan memampatkan lebih baik (dan lebih cepat!) Untuk file teks.Jawaban:
Untuk membuat file ZIP standar terkecil yang dapat dibuat oleh 7-Zip, coba:
Sumber: Bagaimana saya bisa mencapai kompresi ZIP standar terbaik?
Kalau tidak, jika Anda tidak peduli dengan standar ZIP, gunakan pengaturan ultra berikut:
Yang mana:
sumber
Jika Anda dapat menggunakan format .7z dan bukan hanya .zip, saya hanya akan menggunakan PPMD dengan opsi berikut dan membiarkan yang lainnya diatur oleh Level Kompresi:
Saya secara teratur mengompresi log server / teks (60MB +) menggunakan opsi ini dan biasanya keluar 1-2% dari ukuran aslinya.
sumber
Saya membandingkan untuk db.fdb 1,2 GB (1236598784 B) di server Ubuntu 14.04.03 dengan p7zip [64] 9.20 di VM:
dan dapatkan hasilnya:
Saya pikir metode kedua berfungsi dengan baik = (hampir) kompres terbaik dengan waktu terbaik. Tetapi untuk "tampilan" terbaik dan mudah diingat adalah metode pertama - dengan file kecil dan tidak ada titik kompres maks. Antara metode 2 dan 3 kita tidak mendapatkan 7z lebih kecil tetapi membayar hampir dua kali lebih banyak untuk kompresi. Siapa pun yang memutuskan dengan keputusannya sendiri.
sumber
Setelah banyak percobaan, menggali ke dalam dokumentasi 7zip yang terperinci, dan membaca beberapa kode sumber 7z mengenai parameter LZMA2 yang canggih, berikut adalah metode yang lebih baik di bawah ini. Ini mengurangi beberapa file tes dunia nyata 1GB lebih dari 2 hingga 4 kali lebih baik daripada solusi yang diterima sebelumnya diposting di sini atau bahkan di halaman manual 7z.
Kompresi LZMA2 diasumsikan di sini, tetapi Anda mungkin bisa mendapatkan kinerja yang lebih baik di 7zip dengan melewati opsi LZMA2 lanjutan seperti
-m0=LZMA2:27
, atau-m0=LZMA2:d25
, atau berbagai parameter sepertiParameter seperti itu tampaknya tidak dihormati oleh versi 7z yang saya uji, tetapi Anda mungkin ingin menjelajahi lebih lanjut atau menambal kode 7z untuk menguraikannya dengan benar. Atau mungkin itu seharusnya berfungsi dan hanya rusak di build yang diuji.
sumber
Setel bidang "split ke volume, byte" ke ukuran file maksimum yang diizinkan server (dalam byte, saya pikir, meskipun sepertinya menerima singkatan umum seperti "KB" dan "MB"). Jika file zip melebihi ukuran itu, 7-zip akan membaginya menjadi beberapa file secara otomatis, seperti integrasi_serviceLog.zip.001 , integrasi_serviceLog.zip.002 , dll. (Kembali ketika, PK Zip menggunakan ini untuk span file zip melintasi beberapa floppy disks.) Anda perlu semua file hadir untuk unzip. Gunakan itu alih-alih mengkhawatirkan pengaturan kompresi terbaik mutlak untuk digunakan untuk set file tertentu, karena apa yang terbaik untuk satu file mungkin berbeda untuk file lain, dan Anda tidak ingin harus melalui ini setiap kali Anda perlu salin log.
sumber