7 Zip kullanarak dosyaları sıkıştırırken kullanılacak en iyi seçenekler nelerdir?


61

Sık sık günlük dosyaları toplamak ve bunları merkezi bir sunucuya yüklemek zorunda kalıyorum (Başka bir şirkete ait). Merkezi sunucunun dosya boyutu sınırı var, bu yüzden hala zip biçiminde olan en küçük dosyayı oluşturmaya çalışıyorum.

Tek ihtiyacım küçük bir dosya boyutu olduğunda, bir metin dosyasını zip formatına sıkıştırırken kullanılacak en iyi ayar nedir?

7zip Seçenekleri

Belirgin ve seçili ultra sıkıştırmayı yaptım ve LZMA'nın söndürmekten daha iyi bir iş çıkardığını fark ettim, ancak hepsini sınamak için seçeneklerin çok daha fazla izni var.


1
Zip'i birden çok dosyaya bölmek bir seçenek midir?
JaredMcAteer

@Orijinal, sanmıyorum. ('Birimlere bölme' seçeneği bu mu?) Basit ve basit bir dosya bulundurmayı tercih ederim. Gerçekten ihtiyacım olursa, orijinal dosyayı (geçmişte yapmış olduğum) bölebilirim, ancak amacım bir dosyada tutmak.
jjnguy

Oh, ve ben bu soruyu gördüm superuser.com/questions/178111/… Ama bu gerçekten sorumu cevaplamıyor.
jjnguy

Bence sorduğun tam soru cevapsız değil. Bazı metin dosyaları farklı algoritmalarla daha iyi sıkıştırılır. Bazen zip daha iyidir, bazen gzip; bazen, sıkıştırma seviyesi bir fark yaratır ve bazen değil. Hepsi dosyaya bağlı. Bu nedenle, kesin soruyu cevaplamak yerine, izin verilen maksimum boyutlarla uğraşan motive edici örneği ele aldım. Mümkün olan en iyi algoritmaya sahip olsanız bile, yine de boyutunuz sınırlıdır ve özellikle büyük bir kütük bu eşiğin altında sıkıştırılamayabilir, bu nedenle yine de bölmeniz gerekir.
Rob Kennedy

2
DeflateBiçim dışında bir şey seçtiğinizde , artık "normal" bir .zip dosyası değil, WinZip'in öncülüğünde "genişletilmiş" bir zip dosyasıdır. Genellikle uzantıyı .zip olarak tutmuşlardı, çok büyük bir sıkıntıyla (çoğu normal fermuar kullanma aracı bunlarla başa çıkamıyorlardı), ancak çoğu okuyucular şimdi geleneksel .zip dosyalarından ayırmak için .zipx kullanıyor. LZMA'yı kullanabilirseniz, .7z'ye geçin ve PPMd'yi seçin - metin dosyaları için daha iyi (ve daha hızlı!) Sıkıştırılmalıdır.
afrazier

Yanıtlar:


61

7-Zip'in oluşturabileceği en küçük standart ZIP dosyasını oluşturmak için şunu deneyin:

7z a -mm=Deflate -mfb=258 -mpass=15 -r foo.zip C:\Path\To\Files\*

Kaynak: En iyi, standart ZIP sıkıştırmasını nasıl sağlayabilirim?

Aksi takdirde, ZIP standardını umursamıyorsanız, aşağıdaki ultra ayarları kullanın:

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1

Hangileri:

-t7z   7z archive

-m0=lzma
       lzma method

-mx=9  level of compression = 9 (Ultra)

-mfb=64
       number of fast bytes for LZMA = 64
-md=32m
       dictionary size = 32 megabytes

-ms=on solid archive = on

2
@Tek: Neden? Bu iyi değil. Soru, "standart ZIP formatı" nı kullanmaktı, bu nedenle cevap LZMA'yı belirtmemeliydi. -ms = on, standart zip dosyaları değil .7z içindir. -md, BZip2 ile ilişkili olduğu için ZIP’ı (ya da LZMA’yı) etkilemesini beklemiyorum. -mfb = 64, optimize edilmemiş bir değerdir: -mfb = 258, daha küçük zip dosyaları yapar. Ve bu cevap bile zip dosyalarını etkileyebilecek -mpass = 15'ten bahsetmiyor. Bu güzel bir şekilde biçimlendirilmiş bir cevaptır, ne yazık ki, birçok yönden yanlış.
TOOGAM

5
Lzma2 kullanırım
Lance Badger

@ Evet, doğru. Sabit yazım hatası.
kenorb

7-zip SSS’ine bakarsanız, 7z’nin daha yeni sürümlerinin bazı durumlarda daha eski sürümlerden daha kötü performans gösterdiğini belirtir. Daha fazla ayrıntı için SSS bölümünü okuyun, ancak kısaca GUI'deki Parametreler alanındaki 'qs' komutunu kullanın ya da eski dosya sıralama yöntemini kullanmak için komut satırındaki -mq komutunu kullanın. 7-zip.org/faq.html .
drojf

13

.Zip yerine .7z biçimini kullanabiliyorsanız, PPMD'yi aşağıdaki seçeneklerle kullanır ve Sıkıştırma Düzeyinde ayarlandığı şekilde her şeyi bırakırdım :

  • Arşiv Biçimi: 7z
  • Sıkıştırma Yöntemi: PPMD
  • Sıkıştırma Seviyesi: Ultra

Bu seçenekleri kullanarak sunucu / metin kayıtlarını (60MB +) düzenli olarak sıkıştırıyorum ve genellikle orijinal boyutun % 1-2'sinde çıkıyorlar .


Günlük dosyaları gibi metinler için, ppmd kesinlikle gitmenin yoludur. Ancak, soru, PPMD ​​ile çalışmayabilecek zip biçiminde kalması gerektiğini belirtti.
Brian Minton

Sadece PPMD ​​ile zip çalıştı ve Windows Gezgini içeriğini Windows 7'de şikayet etmeden açıyor
Umber Ferrule

2
Bunu ben de farkettim. İçeriği gayet iyi açar. Ancak, aslında zip dosyasının içindeki dosyalardan birini görüntülemeye çalıştığımda, başarısız oldu.
Brian Minton

belki metin dosyaları için daha iyi çalışır ama benim için daha iyi bir C # projesini (text + DLL) sıkıştırarak işe yaramadı
Riga

2
PPMD neden metin dosyaları için üstün sıkıştırma yöntemidir?
user598527

7

Db.fdb 1,2 GB (1236598784 B) Ubuntu sunucusundaki 14.04.03 ile VM'de p7zip [64] 9.20 ile karşılaştırdım:

1. 7z a -mx=9 1.7z db.fdb
2. 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on 2.7z db.fdb
3. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on 3.7z db.fdb
4. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -pass=15 4.7z db.fdb
5. 7z a -mx=9 -mmt=on 5.7z db.fdb
6. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -mmt=on 6.7z db.fdb

ve bu sonuçları var:

1.7z 96 MB (100108731 B) with 6' 25"
2.7z 95 MB ( 99520375 B) with 5' 18"
3.7z 93 MB ( 97512311 B) with 9' 19"
4.7z 93 MB ( 97512345 B) with 9' 40"
5.7z 96 MB (100108731 B) with 5' 26"
6.7z 93 MB ( 97512311 B) with 9' 09"

Bence ikinci yöntem iyi çalışıyor = (neredeyse) en iyi zamanda en iyi sıkıştırma. Ama en iyi "görünüm" ve hatırlanması kolay ilk yöntemdir - küçük dosyalar ve maksimum sıkıştırma noktası yok. 2 ila 3 metodu arasında ekstra 7z küçültmüyoruz fakat sıkıştırma için neredeyse iki kat daha fazla ödüyoruz. Herkes kendi kararını verir.


7

Çok sayıda denemeden sonra, ayrıntılı 7zip belgelerine kazıma ve gelişmiş LZMA2 parametreleriyle ilgili 7z kaynak kodunun bazılarını okuyarak, aşağıda daha iyi bir yöntemdir. Bazı 1GB gerçek dünya test dosyalarını , burada ya da 7z kılavuzunda yayınlanan daha önce kabul edilen çözümlerden 2 ila 4 kat daha fazla azalttı .

7z a -t7z -mx=9 -mfb=273 -ms -md=31 -myx=9 -mtm=- -mmt -mmtf -md=1536m -mmf=bt3 -mmc=10000 -mpb=0 -mlc=0 archive.7z inputfileordir

LZMA2 sıkıştırması burada kabul edilir, ancak 7zip'te -m0=LZMA2:27, ya da gibi gelişmiş bir LZMA2 seçeneklerini ya -m0=LZMA2:d25da gibi bir dizi parametreyi geçerek daha iyi performans elde edebilirsiniz.

-m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1

Bu parametrelere, test ettiğim 7z sürümlerinde saygı duyulmamış gibi görünüyor, ancak daha fazla araştırmak veya 7z kodunu düzgün bir şekilde ayrıştırmak için yama yapmak isteyebilirsiniz. Veya belki de çalışması gerekiyordu ve test edilen yapılarda kırıldı.


vay, bu gerçekten büyük bir fark yarattı. Arşivim için, buradaki diğer cevaplar da dahil olmak üzere başka pek çok öneride denedim ve elde ettiğim en iyi sonuç bu ayarları kullanarak 85 MB'a karşılık 85 MB'tı.
user9399

0

"Birime böl, bayt" alanını sunucunun izin verilen maksimum dosya boyutuna ayarlayın (bayt cinsinden, sanırım "KB" ve "MB" gibi genel kısaltmaları kabul ediyor gibi görünmesine rağmen). Zip dosyası bu boyutu aşarsa, 7-Zip gibi otomatik birden fazla dosya, bölmek olacak integration_serviceLog.zip.001 , integration_serviceLog.zip.002 vb (Dönüş yolu, PK Zip birden fazla boyunca zip dosyaları span bu kullanıldıklarında disketler.) Tüm dosyaları açmak için hazır olmanız gerekir. Herhangi bir belirli dosya grubunda kullanmak için mutlak en iyi sıkıştırma ayarları hakkında endişelenmek yerine bunu kullanın, çünkü bir dosya için en iyisi başka bir dosya için farklı olabilir ve her seferinde bunu yapmak zorunda kalmazsınız. günlükleri kopyala.


1
Diğer taraftaki kişilerin dosyaları nasıl açacağı konusunda endişeliyim. Onlar için olabildiğince basit olmasına ihtiyacım var. Yerleşik pencereleri zip veya gzip kullanarak bölmeli ciltleri açıp açamayacağınızı biliyor musunuz?
jjnguy

Görünüşe göre hayır, yerleşik Windows zip-klasör özelliği yayılmış zip dosyaları yapmaz. Bu çok kötü, çünkü bu, Windows 3'ten önceki formatın standart bir özelliği olduğundan, eğer gzip yapamıyorsa çok şaşırdım. WinZip kesinlikle yapabilir.
Rob Kennedy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.