Jaka jest różnica w różnych poleceniach do kompresji plików w systemie Linux?

0

Jakie są polecenia kompresji plików w systemie Linux i jaka jest między nimi różnica? (na przykład: tar, gzip, rar).
Pracuję nad Linux Mint 11 i robię skrypt do kompresji plików. Potrzebuję:

    1. obsługa szyfrowania haseł (i deszyfrowania)
    2. obsługa podziału plików
    3. obsługa poziomu kompresji

Jakiego rodzaju kompresji mogę używać w Linux Mint 11 (ostatecznie 14) i czy jest dla mnie najlepszy?

Nojas
źródło
tarNie jest to kompresor (ale może powołać gzip, bzip2....).
Basile Starynkevitch

Odpowiedzi:

2

Przede wszystkim niektóre polecenia służą do tworzenia archiwów - tj. plik zawierający inne pliki, często ze strukturą katalogów, własnością, uprawnieniami i datami. Najczęstsze z nich to ar(używane podczas tworzenia bibliotek), tar(TapeARchive) i cpio(CoPyInOut).

Następnie mamy kilka poleceń służących do kompresji plików - np. dzięki czemu plik zajmuje mniej miejsca na dysku. Kompresję można również wykonać w przypadku archiwów. Najczęstszymi samoczynnym programy gzip, bzip2, xz, 7zip... jak również dwie starsze, compressi compact.

Jest to bardzo zgodne z „filozofią uniksową”, w której każde polecenie robi tylko jedną rzecz (ale robi to dobrze) ... tutaj albo tworzy archiwa, albo kompresuje plik - ale nie jedno i drugie. Oczywiście jedno polecenie może wywoływać inne, jak tarmoże wywołać gziplub bzip2.

W systemie Windows bardziej powszechne jest tworzenie programów łączących powiązane zadania - a raczej zadania pozornie powiązane z użytkownikiem ... Jak tworzenie, archiwizowanie i kompresowanie - nawet jeśli są to bardzo różne zadania. W związku z tym mamy także narzędzia pod Uniksem / Linuksem do obsługi - a czasem tworzenia - takich archiwów. zip, rarA arjsą przykłady takich archiwów, które są bardziej lub mniej wspierany pod Linuksem. Zazwyczaj kompresują one i archiwizują jednocześnie (np. zipNajpierw kompresują pliki, a następnie archiwizują skompresowane pliki).

rari zipczy AFAIK wie, że obsługuje jakieś „szyfrowanie” i hasło, ale są one raczej słabe. Prawdopodobnie lepiej (a także bardziej poprawnie w systemie Unix) skorzystać z osobnego narzędzia do szyfrowania i / lub ochrony plików hasłem - może gnupgczy truecrypt?

Przynajmniej zip, rara tartworzenie wsparcia archiwów z wielu części. Jednak inny dopuszczalny „sposób uniksowy”, aby to zrobić; byłoby użyć splitalbo w nieskompresowanym archiwum (tar lub cpio) i skompresować każdą część osobno, albo w skompresowanym pliku (np. z bzip2) - a później użyć catdo scalenia części. Najlepiej byłoby podzielić skompresowane archiwum, ponieważ po ponownym scaleniu program do kompresji (np. Bzip2) wykryłby wszelkie błędy. Chociaż kompresowanie każdej części osobno, zapewni, że pozostałe części będą mogły zostać odzyskane (z większością ich plików), jeśli jedna część zostanie uszkodzona.

Baard Kopperud
źródło
Chociaż zgadzam się z twoją rekomendacją TrueCrypt, wszystkie współczesne wersje / warianty ZIP i RAR AFAIK używają 128/256-bitowego AES (chociaż SecureZip PKWare obsługuje również inne algorytmy), więc możesz opracować dalsze informacje lub podać wiarygodne źródła na poparcie swojego twierdzenia, że ich szyfrowanie / bezpieczeństwo jest „słabe”, zwłaszcza jeśli stosowane są wystarczająco długie i złożone hasła / frazy?
Karan
0

Ogólnie rzecz biorąc, bzip jest lepszy w kompresji niż (g) zip, a 7zip jest lepszy niż bzip. Tar służy do łączenia plików w jeden duży plik i nie kompresuje się. Jest często używany razem z narzędziem do kompresji. AFAIK wszystkie formaty mogą obsługiwać szyfrowanie, podział i poziom kompresji, ale nie wszystkie narzędzia mogą korzystać z tych opcji.

Spowoduje to tarowanie i kompresowanie. Nie wiem w jakiej kolejności, ale myślę, że plik jest najpierw kompresowany, a następnie dodawany do archiwum. Oryginalne pliki pozostają tam, gdzie są.

tar -czvf test.tgz test

Inną opcją jest gzip, ale działa to tylko na pojedyncze pliki

gzip test

Spowoduje to spakowanie pliku i dodanie go do nowego archiwum. Kiedy wszystko się skończy, plik testowy jest usuwany, jak sądzę.

SPRBRN
źródło
Więc sugerujesz, aby najpierw spakować plik, a następnie go skompresować? Mogę używać tylko poleceń standardowych w systemie Linux. Czy można używać 7zip lub bzip bez instalowania dodatkowych pakietów?
Nojas
@Nojas tak, możesz. Jeśli chodzi o standard, tar i gzip i prawie na pewno bzip zostaną zainstalowane domyślnie, tak jak będzie compress.
terdon
7zip nie jest standardem. Użyj gzip lub tar jak wyjaśniono w mojej zredagowanej odpowiedzi.
SPRBRN
1
„Ogólnie rzecz biorąc, bzip jest lepszy niż (g) zip, 7zip jest lepszy niż bzip”. Pod względem poziomu kompresji jest to prawda. Pod względem prędkości i zużycia pamięci jest odwrotnie. BTW, twój przykład gzip jest całkowicie błędny, ponieważ gzip tylko kompresuje, to nie jest archiwizator. tworzy foo.gzplik dla każdego wejścia foo(a następnie usuwa nieskompresowaną wersję). gzip testpo prostu wykonuje ten proces dla „testu”. Jeśli jednak chcesz, możesz zeskrobać (bez kompresji) kilka wygenerowanych w ten sposób gz.
kampu
Masz rację co do gzip. Zaktualizowałem swoją odpowiedź.
SPRBRN