Wspólne podejście
Istnieje opcja dla tar
programu:
-I, --use-compress-program PROG
filter through PROG (must accept -d)
Możesz użyć wielowątkowej wersji narzędzia archiwizującego lub kompresora.
Najpopularniejszymi wielowątkowymi archiwizatorami są pigz (zamiast gzip) i pbzip2 (zamiast bzip2). Na przykład:
$ tar -I pbzip2 -cf OUTPUT_FILE.tar.bz2 paths_to_archive
$ tar --use-compress-program=pigz -cf OUTPUT_FILE.tar.gz paths_to_archive
Archiver musi zaakceptować -d. Jeśli narzędzie zastępcze nie ma tego parametru i / lub musisz określić dodatkowe parametry, użyj rur (w razie potrzeby dodaj parametry):
$ tar cf - paths_to_archive | pbzip2 > OUTPUT_FILE.tar.gz
$ tar cf - paths_to_archive | pigz > OUTPUT_FILE.tar.gz
Wejścia i wyjścia jedno- i wielowątkowe są kompatybilne. Możesz kompresować za pomocą wersji wielowątkowej i dekompresować za pomocą wersji jedno-wątkowej i odwrotnie.
p7zip
Do kompresji p7zip potrzebny jest mały skrypt powłoki, taki jak poniżej:
#!/bin/sh
case $1 in
-d) 7za -txz -si -so e;;
*) 7za -txz -si -so a .;;
esac 2>/dev/null
Zapisz go jako 7zhelper.sh. Oto przykład użycia:
$ tar -I 7zhelper.sh -cf OUTPUT_FILE.tar.7z paths_to_archive
$ tar -I 7zhelper.sh -xf OUTPUT_FILE.tar.7z
xz
Odnośnie obsługi wielowątkowej XZ. Jeśli używasz wersji 5.2.0 lub wyższej XZ Utils, można wykorzystać wiele rdzeni do kompresji przez ustawienie -T
lub --threads
do odpowiedniej wartości za pośrednictwem XZ_DEFAULTS zmiennych środowiskowych (np XZ_DEFAULTS="-T 0"
).
To jest fragment człowieka dla wersji 5.1.0alfa:
Kompresja i dekompresja wielowątkowa nie są jeszcze zaimplementowane, więc na razie ta opcja nie działa.
Nie będzie to jednak działać w przypadku dekompresji plików, które również nie zostały skompresowane z włączonym wątkiem. Od mana dla wersji 5.2.2:
Gwintowana dekompresja nie została jeszcze zaimplementowana. Działa tylko w przypadku plików zawierających wiele bloków z informacjami o rozmiarze w nagłówkach bloków. Wszystkie pliki skompresowane w trybie wielowątkowym spełniają ten warunek, ale pliki skompresowane w trybie jednowątkowym nawet nie są używane, jeśli użyto opcji --block-size = size.
Ponowna kompilacja z wymianą
Jeśli budujesz tar ze źródeł, możesz ponownie skompilować z parametrami
--with-gzip=pigz
--with-bzip2=lbzip2
--with-lzip=plzip
Po ponownej kompilacji tar za pomocą tych opcji możesz sprawdzić dane wyjściowe pomocy tar:
$ tar --help | grep "lbzip2\|plzip\|pigz"
-j, --bzip2 filter the archive through lbzip2
--lzip filter the archive through plzip
-z, --gzip, --gunzip, --ungzip filter the archive through pigz