Kompresja i archiwizacja danych


(Mikolaj98) #1

Cześć.
Jak kompresować duże pliki jak tutaj (Uncompressed 10 GB)?
Z góry dziękuję


#2

Wszystkie pliki, które tam masz z rozszerzeniem gz są już skompresowane algorytmem zip. Pliki iso i dmg to są obrazy "płyt’ (nośników), które niekiedy również zostały skompresowane (a same w sobie też niekiedy bywają skompresowane, tzn. ich zawartość). Dalsza kompresja dowolnym algorytmem spowoduje jedynie, że pliki staną się większe.
Ogólnie do kompresowania pod linuksem masz od groma programów, wykorzystujących różne algorytmy. Najpopularniejsze, to gzip, xz, p7-zip… W sumie akurat to działa we wszystkich praktycznie systemach tak samo.


(Mikolaj98) #3

Ok. Tylko że jak sam kompresuję dane to tracę najwyżej 10MB na rozmiarze. Nie interesuje mnie kompresja plików *.iso, tylko wszystkich danych.

A pliki *.img to nie skompresowane obrazy dysków i dyskietek.


#4

Ok, w takim razie napisz jasno czego oczekujesz od tych, skompresowanych (*.gz) już plików.
PS: Niemal każdy program do kompresji ma możliwość ustawienia stopnia kompresji. Możesz skompresować “mniej”, ale szybciej i więcej, ale “dłużej”.
Powtarzam - wszystkie pliki noszące rozszerzenie tar.gz bądź zip z podanego przez Ciebie linka zostały już skompresowane.


(Mikolaj98) #5

Chcę w konsoli kompresować pliki tak by przy 10 GB osiągnąć 1 - 2 GB.


(pocolog) #6

Jeśli utworzysz 10GB plik zawierający w treści jedynie powtarzający się znak “a” to skompresujesz go nawet do kilku bitów :wink:
Poczytaj najpierw co to jest kompresja i jak działa, bo widać brakuje ci podstawowej wiedzy - narzędzia później dobierzesz wedle potrzeb, bo będziesz już ją potrafił określić :smiley:


#7

Tyle, że… nie zawsze się to da. W zależności od tego co jest formatem pliku wejściowego możesz uzyskać dobre, albo złe (nawet większe) rozmiary. Pliku jpg praktycznie nie skompresujesz. Plik plain-text - bardzo.
Każdy z programów kompresujących ma “przełącznik”. którym uzyskasz najlepsze możliwe skompresowanie dla takiego programu (algorytmu) - np. w przypadku gzip, to -9. Chcąc uzyskać najlepszy możliwy rezultat musisz poszukać jak dany format kompresują różne programy. Generalnie za jeden z najlepiej kompresujących uchodzi 7z (też ma możliwość kompresowania “bardziej” lub “mniej”). Każdy z programów ma swój podstawowy podręcznik, który wywołasz przez jego help lub man. Wówczas dowiesz się jaki dla tego programu jest przełącznik oferujący najwyższą możliwą kompresję. Nie ma jednego, jedynego właściwego sposobu by z 10MB uzyskać 2MB.


(Mikolaj98) #8

Systemy operacyjne i programy raczej nie składają się z plików tekstowych. I proszę o polecenie


(pocolog) #9

tar -cJf archiwum.tar.xz plikidokompresji


#10

Proszę polecam: man nazwa_programu_kompresującego. Prościej - w konsoli: nazwa_programu_kompresującego bez żadnych dodatków, ewentualnie -h/–help.
Reszta - to wrzuć w google’a nazwę plików, które chcesz kompresować i zadaj pytanie co to najlepiej kompresuje.
Nikt tu szklanej kuli nie ma i nie wie jakie pliki chcesz kompresować.
Jak wspomniałem - za jeden z programów, który dysponuje najlepszymi algorytmami kompresji uchodzi 7z.


(Mikolaj98) #11

Ale jakie są te programy? Znam tar, gzip.

PS: @pocolog: kompresja nie zadziałała rozmiar pliku zmniejszył się o 21MB. Ale i tak trochę lepiej niż wcześniej o 9MB.


(marcin82) #12

Obecnie jednym z najskuteczniejszych kompresorów jest xz. Dla uzyskania najlepszego stopnia kompresji:

export XZ_OPTS='-9 -T0' tar cJf nazwa.tar.xz nazwa


(saturno) #13

Z moich prób najbardziej kompresuje tar.7z
Uruchamiasz: MC >> wchodzisz w kompresowany katalog >> Wciskasz: F2 >> z listy wybierasz: tar.7z i zatwierdzasz >> zatwierdzasz nazwę archiwum i cierpliwie czekasz na koniec kompresji co poznasz po pojawieniu się okna programu: MC.

Ps.: W pokazanym przez ciebie przykładzie skompresowany jest obraz dysku, a co za tym idzie i wolne miejsce dla przykładu u mnie:

  • Dysk z systemem ma: 30 GB
  • Zajęte jest: 16,5 GB
  • Obraz tego dysku zajmuje: 8,6 GB

16,5 do 8,6 daje kompresję na poziomie 52%

Edycja:
Na wine mam zainstalowany: 7-zip i okazało się że on jeszcze lepiej kompresuje.
Ustawione mam:

  • format archiwum: 7z
  • Stopień kompresji: Ultra
  • Metoda kompresji: LZMA2

Jak to przenieść na linuksowy 7-zip nie mam pojęcia :unamused:


(LoliconSuspect) #14

Zainstalować p7zip i wykonać:
7za a -t7z -mx9 powinno osiągnąć podobne wyniki.

Swoją drogą porównywaniu tar.7z z 7z jest bez sensowne. tar to przecież tylko archiwum bez kompresji. Po co się bawić w tar.7z skoro można po prostu .7z zrobić?


#15

Może czegoś nie chce potracić:

dowiązań, praw dostępu


#16

A w sumie… zainstaluj sobie PeaZip: http://www.peazip.org/peazip-linux.html - graficzna pakowacz do różnych formatów. Wypróbuj co daje najlepszą kompresję (jeśli chodzi o rodzaj algorytmu).
Tutaj: https://unix.stackexchange.com/questions/78262/which-file-compression-software-for-linux-offers-the-highest-size-reduction masz jeszcze różne wypowiedzi i porównania.


(saturno) #17

Wyniki podobny z tym że nieco gorszy.

Wtedy bardzo ostrożnie trzeba podchodzić do zastosowanego typu archiwum, bo np. tar.gz nie da się prawidłowo archiwizować w żadnym programie graficznym: http://www.debian.pl/viewtopic.php?f=18&t=26486