Obsługa archiwów RAR i 7-Zip w Linuksie
Formaty kompresji plików RAR i 7-Zip pochodzą z systemu Windows, więc ich obsługa w Linuksie nie jest tak automatyczna, jak w przypadku starych uniksowych pozostałości, takich jak Gzip i TAR. Ale z odpowiednim oprogramowaniem możesz obsługiwać te skompresowane pliki bez większych problemów.
Po pierwsze, trochę tła. RAR – skrót od Roshal Archive – jest zastrzeżonym formatem kompresji plików opracowanym przez Eugene’a Roshala. Roshal sprzedaje komercyjne narzędzie dla systemu Windows o nazwie WinRAR, ale oferuje również klientów bez kompresji dla wielu systemów operacyjnych bez żadnych opłat.
7-Zip jest aplikacją Windows zaprojektowaną do obsługi tak wielu formatów kompresji, jak to tylko możliwe. Jego natywnym formatem jest 7z, który używa nowoczesnego pochodnego algorytmu kompresji LZ77. Aplikacja 7-Zip dla Windows oraz zestaw do tworzenia oprogramowania 7z są dostępne na licencji LGPL.
Oba formaty mają rzekomo osiągać lepsze współczynniki kompresji dla typowych typów danych niż starsze algorytmy. Obsługują również dzielenie dużych archiwów na wiele małych woluminów w celu łatwiejszego przenoszenia i usuwania błędów. Połączenie tych dwóch cech sprawiło, że stały się popularnym wyborem do dystrybucji online bardzo dużych plików, takich jak obrazy ISO.
7z i Linux
Aplikacja 7-Zip jest open source, ale pozostaje tylko dla Windows. Dla użytkowników Linuksa, projekt łączy się z pakietem klienta wiersza poleceń o nazwie p7zip, który dostarcza dwa pliki wykonywalne, 7z i 7za. Obie mają taką samą składnię i opcje, różniąc się jedynie tym, że 7za jest samodzielną aplikacją skompilowaną tylko do użytku z 7z i podstawowymi formatami uniksowymi (tar, gzip, bzip2, itd.), podczas gdy 7z używa architektury wtyczek, która pozwala na obsługę wielu dodatkowych formatów kompresji.
Podstawowa składnia to 7z function options filename.7z
. Aby rozpakować archiwum, należy użyć 7z x myfile.7z
. Pliki z archiwum można wyodrębnić za pomocą 7z e myotherfile.7z
, ale użycie funkcji e powoduje wyodrębnienie wszystkich plików do bieżącego katalogu roboczego, podczas gdy x zachowuje ich ścieżki dostępu.
RAR i Linux
Sytuacja RAR jest nieco bardziej skomplikowana ze względu na zastrzeżony schemat kompresji tego formatu plików. Strona RARLAB udostępnia bezpłatnego klienta uncompress-only dla Linuksa o nazwie unrar, przeznaczonego dla 32-bitowych dystrybucji Intela w pakietach RPM i Slackware, oraz jako samodzielne binaria dla systemów PowerPC, 64-bitowych Intela i ARM Linuksa. Ponieważ program unrar firmy RARLAB nie jest ani wolnym oprogramowaniem, ani otwartym źródłem, raczej nie znajdziesz go w wielu dystrybucjach Linuksa. Można pobrać z RARLABa plik tarball z kodem źródłowym, ale dołączona licencja wyraźnie zabrania używania kodu źródłowego do tworzenia jakiejkolwiek formy kodera RAR.
Inną opcją jest narzędzie wiersza poleceń na licencji GPLv2, stworzone przez projekt Gna! Co dość mylące, open source’owy dekoder RAR jest również nazwany unrar. Gna! unrar został zaprojektowany jako wrapper wokół unrarlib, otwartoźródłowej biblioteki dekodującej RAR, stworzonej przez Christiana Scheurera i Johannesa Winkelmanna – którzy nie są częścią Gna!.
Scheurer i Winkelmann stworzyli unrarlib z oryginalnego kodu źródłowego RARLAB, ale poprosili i otrzymali pozwolenie od Eugene Roshala na wydanie ich pracy jako wolnego oprogramowania. Tak więc, unrarlib jest dostępny na licencji GPLv2 oraz na oryginalnej, prawnie zastrzeżonej licencji RARLAB.
Ten układ licencyjny wydaje się otwierać drogę dla zainteresowanych stron do obejścia RARLAB i stworzenia konkurencyjnego kodera RAR z oryginalnego kodu źródłowego, ale to się jeszcze nie stało. Sam Scheurer nie jest zainteresowany takim rozwiązaniem, mówiąc, że woli używać formatów open source do tworzenia archiwów. „Nie zawsze możesz wybrać, w jakim formacie otrzymasz dane, więc dobrze jest mieć otwarty sposób dostępu do nich. Ale możesz wybrać sposób, w jaki tworzysz archiwum. Jeśli nie chcesz zamkniętych narzędzi do kompresji, istnieją dobre alternatywy.”
Zastrzeżony unrar używa tej samej podstawowej składni co 7z i 7za. Aby odkompresować i zarchiwizować oraz zachować ścieżki do plików, należy wpisać unrar x myarchive.rar
. W unrar na licencji GPL, po prostu dodajemy myślnik przed x: unrar -x myotherarchive.rar
.
Dzisiaj unrarlib obsługuje tylko do wersji 2 formatu plików RAR. Scheurer mówi, że pracuje nad dodaniem do unrarliba obsługi nowszego formatu RAR3, ale nie jest pewien, jakiej reakcji można się spodziewać po RARLABie.
Obsługa GUI
Jeśli większość swojej pracy wykonujesz z poziomu linuksowego menedżera okien, masz szczęście. Zarówno GNOME jak i KDE mają graficzne menedżery archiwów – File Roller dla GNOME i Ark dla KDE. Najnowsze wersje obu programów używają wtyczek do obsługi wielu formatów archiwów i opierają się na p7zip do obsługi 7z oraz Gna! unrar do obsługi RAR. Ze względu na niekompatybilność nowszych plików RAR3, nadal możesz potrzebować zainstalować własnościowy unrar w swoim systemie.
Jak wspomniałem na początku, zarówno 7z jak i RAR obsługują dzielenie dużych plików na mniejsze kawałki. Jednakże, w moich testach ani File Roller ani Ark nie rozpoznały, że katalog pełen kolejno ponumerowanych plików myfile.7z.001, myfile.7z.002, myfile.7z.003, i tak dalej stanowi jeden plik 7z podzielony na kawałki.
Więc, aby dostać się do danych wewnątrz, musiałem ponownie połączyć podzielone pliki w jeden w linii poleceń używając polecenia cat. cat myfile.7z.001 myfile.7z.002 myfile.7z.003 > myfile.7z
sklei częściowe pliki z powrotem w kolejności, nazywając wynik myfile.7z. W tym momencie możesz otworzyć archiwum 7z w File Roller lub Ark, ale dopóki jesteś już w linii poleceń, znacznie szybciej jest po prostu wpisać 7z x myfile.7z
, i voila – dane, piękne dane, na wyciągnięcie ręki.