Mam komputer z 90% wykorzystaniem dysku twardego. Chcę skompresować ponad 500 plików dziennika do nowego, mniejszego pliku. Dysk twardy jest jednak zbyt mały, aby zachować zarówno oryginalne, jak i skompresowane pliki.
Więc potrzebuję skompresować wszystkie pliki dziennika do jednego nowego pliku jeden po drugim, usuwając każdy oryginalny raz skompresowany.
Jak mogę to zrobić w systemie Linux?
Odpowiedzi:
gzip
lubbzip2
skompresuje plik i automatycznie usunie nieskompresowany plik (jest to ich domyślne zachowanie).Należy jednak pamiętać, że podczas procesu kompresji oba pliki będą istnieć.
Jeśli chcesz kompresować pliki dziennika (tzn. Pliki zawierające tekst), możesz preferować
bzip2
, ponieważ ma on lepszy stosunek do plików tekstowych.Porównanie i przykłady:
AKTUALIZACJA, jak @Jjoao powiedział mi w komentarzu, co ciekawe,
xz
wydaje się mieć najlepszy stosunek do zwykłych plików z domyślnymi opcjami:Aby uzyskać więcej informacji, oto interesujący punkt odniesienia dla różnych narzędzi: http://binfalse.de/2011/04/04/comparison-of-compression/
W powyższym przykładzie używam
-9
najlepszego współczynnika kompresji, ale jeśli czas potrzebny na kompresowanie danych jest ważniejszy niż współczynnik, lepiej nie używaj go (użyj niższej opcji, tj.-1
Lub czegoś pomiędzy).źródło
xz myfile
?xz
, ale rozważę to teraz. Zobacz aktualizację mojego postu.xz -9
. To znacznie zwiększa pamięć wymaganą do kompresji / dekompresji, bez znaczącej poprawy współczynnika kompresji. Strona podręcznika mówi nawet (podkreślając swoją): „W szczególności nie jest dobrym pomysłem ślepe używanie opcji -9 do wszystkiego, co często ma miejsce w przypadku gzip (1) i bzip2 (1)”. Domyślniexz -6
jest wystarczająco dobry, a nawetxz -0
/xz -1
zwykle kompresuje lepiej niżgzip -9
.-9
, ale użyłem go tutaj, ponieważ chciałem zrobić jakiś test porównawczy dla współczynnika kompresji „w tej samej skali”. Ale znowu masz całkowitą rację: używanie na ślepo to zły pomysł-9
.Sam opracowałem rozwiązanie smoły.
Usuwa pojedynczy plik po skompresowaniu go do pliku docelowego.
Szybkość kompresji nie jest jednak dość duża. Polecenie wygląda następująco:
źródło
W uzupełnieniu do @apaul podkreślam, że kompresowanie plików indywidualnie
(zamień bzip2 na gzip, xz lub inny ulubiony plik zip) może być ważny:
W ten sposób nadal możesz zobaczyć (
bzcat file.bz2
), wyszukać (bzgrep file.bz2
), edytować (vi file.bz2
) skompresowany plik i usunąć starsze, jeśli to konieczne.źródło
Próbowałem to zrobić w wersji tar tar BSD. W takim przypadku opcja --remove-files nie jest dostępna. Skończyło się (i pracowałem) to:
źródło