Pendekatan umum
Ada opsi untuk tar
program:
-I, --use-compress-program PROG
filter through PROG (must accept -d)
Anda dapat menggunakan utilitas pengarsipan atau kompresor versi multithread.
Pengarsip multithread yang paling populer adalah pigz (bukan gzip) dan pbzip2 (bukan bzip2). Misalnya:
$ tar -I pbzip2 -cf OUTPUT_FILE.tar.bz2 paths_to_archive
$ tar --use-compress-program=pigz -cf OUTPUT_FILE.tar.gz paths_to_archive
Pengarsip harus menerima -d. Jika utilitas pengganti Anda tidak memiliki parameter ini dan / atau Anda perlu menentukan parameter tambahan, maka gunakan pipa (tambahkan parameter jika perlu):
$ tar cf - paths_to_archive | pbzip2 > OUTPUT_FILE.tar.gz
$ tar cf - paths_to_archive | pigz > OUTPUT_FILE.tar.gz
Input dan output singlethread dan multithread kompatibel. Anda dapat mengompres menggunakan versi multithread dan mendekompres menggunakan versi singlethread dan sebaliknya.
p7zip
Untuk p7zip untuk kompresi, Anda memerlukan skrip shell kecil seperti berikut:
#!/bin/sh
case $1 in
-d) 7za -txz -si -so e;;
*) 7za -txz -si -so a .;;
esac 2>/dev/null
Simpan sebagai 7zhelper.sh. Berikut contoh penggunaannya:
$ tar -I 7zhelper.sh -cf OUTPUT_FILE.tar.7z paths_to_archive
$ tar -I 7zhelper.sh -xf OUTPUT_FILE.tar.7z
xz
Mengenai dukungan XZ multithreaded. Jika Anda menjalankan versi 5.2.0 atau lebih tinggi dari XZ Utils, Anda dapat menggunakan beberapa core untuk kompresi dengan mengatur -T
atau --threads
ke nilai yang sesuai melalui variabel lingkungan XZ_DEFAULTS (mis XZ_DEFAULTS="-T 0"
.).
Ini adalah fragmen manusia untuk versi 5.1.0alpha:
Kompresi dan dekompresi multithreaded belum diimplementasikan, sehingga opsi ini tidak berpengaruh untuk saat ini.
Namun ini tidak akan berfungsi untuk dekompresi file yang belum dikompres dengan mengaktifkan threading. Dari manusia untuk versi 5.2.2:
Dekompresi berulir belum diterapkan. Ini hanya akan berfungsi pada file yang berisi banyak blok dengan informasi ukuran di header blok. Semua file yang dikompresi dalam mode multi-threaded memenuhi kondisi ini, tetapi file yang dikompresi dalam mode single-threaded tidak bahkan jika --block-size = size digunakan.
Kompilasi ulang dengan penggantian
Jika Anda membuat tar dari sumber, maka Anda dapat mengkompilasi ulang dengan parameter
--with-gzip=pigz
--with-bzip2=lbzip2
--with-lzip=plzip
Setelah mengkompilasi ulang tar dengan opsi-opsi ini Anda dapat memeriksa output dari bantuan 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