Jakieś polecenie linux, aby wykonać równoległą dekompresję pliku tar.bz2?

17

Mam dość duży plik (~ 50 GB) i jego uruchomienie zajmuje trochę czasu

tar xvf file.tar.bz2

na tym. Wiem o programach, które mogą wykonywać równoległą kompresję plików bzip2, ale nie wiem o programach, które mogą wykonywać równoległą dekompresję plików bzip2.

Czy są jakieś programy, które mogą to osiągnąć? Jaka jest dokładna składnia polecenia do wyodrębnienia z pliku?

Używam Ubuntu 12.04

użytkownik784637
źródło

Odpowiedzi:

22

lbzip2i pbzip2są narzędziami, których można użyć do równoległej kompresji i dekompresji.

Stosowanie:

lbzip2 -d <file.tar.bz2> 
pbzip2 -d <file.tar.bz2> 

-d opcja służy do dekompresji.

Aby zainstalować te pakiety:

Zainstaluj lbzip2typ lbzip2 :

sudo apt-get install lbzip2

Zainstaluj pbzip2typ pbzip2 :

sudo apt-get install pbzip2
devav2
źródło
Więc jeśli dobrze rozumiem, muszę dekompresować, a następnie rozpakować? Jak 2 polecenia w przeciwieństwie do tar xvf?
user784637
1
Tak, po uruchomieniu lbzip2 -d -n 2 file.tar.bz2da plik tar. Które muszą być nieuzbrojone.
devav2
1
Ze strony podręcznika pbzip2 (lbzip2 opowiada podobną historię): „Pliki skompresowane za pomocą pbzip2 również zyskają znaczne przyspieszenie po dekompresji za pomocą pbzip2. Pliki skompresowane za pomocą bzip2 nie zobaczą przyspieszenia, ponieważ bzip2 pakuje dane w jedną porcję których nie można podzielić na procesory ”.
Tapio
1
@Tapio Oto opis lbzip2„Kompresuj lub dekompresuj argumenty PLIK lub standardowe wejście do zwykłych plików lub standardowego wyjścia, wywołując libbz2 Juliana Sewarda z wielu wątków. Narzędzie lbzip2 wykorzystuje wiele wątków i rozdzielacz związany z wejściem nawet podczas dekompresowania plików .bz2 utworzony przez standardowy bzip2 (ale patrz BŁĘDY poniżej). ”
devav2
1
Z samej odpowiedzi rozumiem, że oba programy muszą być używane w jakiś sposób razem - ale w rzeczywistości wydają się być alternatywami? (Mówi, że „lbzip2 i pbzip2 to narzędzia ...”, „Zastosowanie: lbzip2 ... pbzip2 ...”, „aby zainstalować te ...”)
Volker Siegel
11

Możesz rozpakować swoje archiwum za pomocą jednego polecenia, używając -Iopcji tar . Daje to możliwość korzystania z dowolnego narzędzia kompresji, które obsługuje tę -dopcję.

tar -I lbzip2 -xvf <file.tar.bz2>

Przydaje się to bardzo przy wykolejeniu z dużym archiwum, ponieważ nie trzeba mieć dwukrotnie większego rozmiaru nieskompresowanego w docelowym systemie plików (plik tar i plik wyjściowy). Jest to również szybsze, ponieważ potrzebujesz znacznie mniej operacji We / Wy dysku.

Oczywiście działa to również przy kompresji:

tar -I lbzip2 -cvpf <file.tar.bz2> <file>

Sprawdź tar --helpwięcej opcji.

Ludovic Ronsin
źródło
1
Inną opcją (np. Jeśli twoja wersja „tar” nie rozumie opcji -I) tolbzip2 -dc file.tar.bz2 | tar xvf -
Wodin 11.11.14
5

możesz użyć pbzip2 z -dflagą do „dekompresji”,

ze strony man:

  pbzip2 -d myfile.tar.bz2

Ten przykład zdekompresuje plik „myfile.tar.bz2” do zdekompresowanego pliku „myfile.tar”. Użyje automatycznie wykrytej liczby procesorów (lub 2 procesorów, jeśli nie jest obsługiwane automatyczne wykrywanie).

Po rozpakowaniu należy rozpakować plik za pomocą

 tar xf myfile.tar

Plik tar jest tylko kontenerem, do którego można zastosować wiele algorytmów kompresji, na przykład możesz mieć „.tar.gz” lub „.tar.bz2”, które mają różne algorytmy kompresji. Więc pbzip2 rozpakuje tylko archiwum, ale nie wyodrębni plików, użyj tardo wyodrębnienia plików. Tar nie powinien trwać długo, ponieważ archiwum jest już nieskompresowane i po prostu rozpakuje pliki. (zauważ, że nie używamy flagi „z” ani flagi „j” w poleceniu tar, co oznacza, że ​​chcemy również zdekompresować plik)

Sam
źródło
1
strona podręcznika zawiera kilka użytecznych przykładów: manpages.ubuntu.com/pbzip2
Savvas Radevic
@Sam Dziękuję za odpowiedź - czy byłbyś w stanie odpowiedzieć na komentarz, który pozostawiłem na drugiej odpowiedzi
user784637
2

lbzip2 wydaje się znacznie lepszy niż pbzip2 w twoim przypadku, ponieważ jest w stanie przyspieszyć dekompresję standardowych plików .bz2, podczas gdy pbzip2 tego nie robi. (Właśnie przetestowałem - 17 sekund dla lbzip2 vs 56 sekund dla pbzip2 na częściowo obciążonym czterordzeniowym rdzeniu).

Stefan Reich
źródło