2013-09-01 45 views
2

並行焦油我真的龐大的文件夾,我想存檔gzip和其拆分:與分裂的大文件夾

#!/bin/bash 
dir=$1 
name=$2 
size=32000m 
tar -czf /dev/stdout ${dir} | split -a 5 -d -b $size - ${name} 

是否有辦法與平行GNU加快呢? 謝謝。

+1

I/O通常不是並行。 –

+0

嘗試使用7-zip代替其選項「-mmt」。 – konsolebox

+1

我使用的是Lustre並行filelsystem,IO不是問題。 – Arman

回答

3

似乎並行gzip壓縮的最佳工具是pigz。請參閱comparisons

有了它,你可以有這樣的命令:

tar -c "${dir}" | pigz -c | split -a 5 -d -b "${size}" - "${name}" 

憑藉其選項-p你也可以指定要使用線程數(默認是在線的處理器的數量,或8如有不明)。有關更多信息,請參閱pigz --helpman pigz

UPDATE

使用GNU平行,你可以做一些這樣的:

contents=("$dir"/*) 
outdir=/somewhere 
parallel tar -cvpzf "${outdir}/{}.tar.gz" "$dir/{}" ::: "${contents[@]##*/}" 
+0

如何將文件解壓縮回文件夾我指的是pigz選項 –

+1

看起來下面的工作是: 'cat prefix *> name_of_tar.tar.gz' 然後你可以解開「 name_of_tar.tar.gz「 –

+0

@Arash_D_B或者直接將其直接輸入tar:'cat prefix * | tar -xz' – konsolebox