Często muszę zbierać pliki dziennika i przesyłać je na centralny serwer (należący do innej firmy). Serwer centralny ma limit rozmiaru pliku, dlatego próbuję utworzyć najmniejszy możliwy plik, który nadal jest w formacie zip.
Jakiego ustawienia najlepiej użyć podczas kompresji pliku tekstowego do formatu zip, gdy potrzebuję tylko małego rozmiaru pliku?
Zrobiłem oczywistą i wybrałem ultra kompresję i zauważyłem, że LZMA ma lepszą pracę niż deflacja, ale jest o wiele za dużo innych kombinacji opcji, aby przetestować je wszystkie.
compression
zip
7-zip
jjnguy
źródło
źródło
Deflate
formatem, nie jest to już „normalny” plik .zip, ale „rozszerzony” plik zip, którego pionierem jest WinZip. Początkowo zachowali rozszerzenie jako .zip, co jest bardzo konsternacyjne (ponieważ większość normalnych narzędzi do obsługi zip-ów nie jest w stanie sobie z nimi poradzić), ale większość archiwizatorów używa teraz .zipx, aby odróżnić je od tradycyjnych plików .zip. Jeśli możesz korzystać z LZMA, przełącz się na .7z i wybierz PPMd - powinien kompresować się lepiej (i szybciej!) Dla plików tekstowych.Odpowiedzi:
Aby utworzyć najmniejszy standardowy plik ZIP, który może utworzyć 7-Zip, spróbuj:
Źródło: Jak uzyskać najlepszą standardową kompresję ZIP?
W przeciwnym razie, jeśli nie zależy Ci na standardzie ZIP, użyj następujących ustawień ultra:
Które są:
źródło
Jeśli możesz użyć formatu .7z zamiast tylko .zip, po prostu użyłbym PPMD z następującymi opcjami i pozostawiłbym wszystko inne ustawione przez Poziom Kompresji:
Regularnie kompresuję dzienniki serwera / tekstu (60 MB +) przy użyciu tych opcji i zwykle wychodzą one w wysokości 1-2% oryginalnego rozmiaru.
źródło
Porównuję dla db.fdb 1,2 GB (1236598784 B) na serwerze Ubuntu 14.04.03 z p7zip [64] 9.20 na VM:
i uzyskaj te wyniki:
Myślę, że druga metoda działa dobrze = (prawie) najlepszy kompres z najlepszym czasem. Ale dla najlepszego „widoku” i łatwego do zapamiętania jest pierwsza metoda - z małymi plikami i bez punktu maksymalnej kompresji. Pomiędzy metodą 2 a 3 nie dostajemy dodatkowych mniejszych 7z, ale płacimy prawie dwa razy więcej czasu na kompresję. Każdy decyduje sam.
źródło
Po wielu eksperymentach, zagłębieniu się w szczegółową dokumentację 7zip i przeczytaniu części kodu źródłowego 7z dotyczącego zaawansowanych parametrów LZMA2, oto lepsza metoda poniżej. Zmniejszyło niektóre 1 GB rzeczywistych plików testowych ponad 2 do 4 razy lepiej niż wcześniej akceptowane rozwiązania zamieszczone tutaj, a nawet na stronie 7z.
Zakłada się tutaj kompresję LZMA2, ale możesz być w stanie uzyskać jeszcze lepszą wydajność w 7zip dzięki przekazywaniu zaawansowanych opcji LZMA2, takich jak
-m0=LZMA2:27
, lub-m0=LZMA2:d25
, lub tablicy parametrów takich jakWydaje się, że takie parametry nie były przestrzegane przez testowane przeze mnie wersje 7z, ale możesz chcieć dalej eksplorować lub łatać kod 7z, aby je poprawnie przeanalizować. A może powinien działać i jest po prostu zepsuty w testowanych kompilacjach.
źródło
Ustaw pole „podziel na wolumin, bajty” na maksymalny dozwolony rozmiar pliku serwera (w bajtach, jak sądzę, chociaż wygląda na to, że akceptuje typowe skróty, takie jak „KB” i „MB”). Jeśli plik zip przekroczy ten rozmiar, 7-zip automatycznie podzieli go na wiele plików, takich jak integracja_usługi_logicznej.zip.001 , integracja_usługi.zip.002 itp. (Dawno temu, gdy PK Zip używał tego, aby rozciągać pliki zip na wiele plików dyskietki.) Będziesz potrzebować wszystkich plików, aby je rozpakować. Użyj tego zamiast martwić się o absolutnie najlepsze ustawienia kompresji, które mają być zastosowane dla dowolnego określonego zestawu plików, ponieważ to, co jest najlepsze dla jednego pliku, może być inne dla innego pliku i nie musisz tego robić za każdym razem, gdy potrzebujesz kopiuj dzienniki.
źródło