3

我有一个非常大的文件夹,我想 gzip 并将它们拆分为存档:

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

有没有办法用 gnu 并行加速这个?谢谢。

4

1 回答 1

4

似乎并行 gzip 压缩的最佳工具是pigz。查看比较

有了它,你可以有这样的命令:

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

使用它的选项-p,您还可以指定要使用的线程数(默认为在线处理器的数量,如果未知,则为 8)。请参阅pigz --helpman pigz了解更多信息。

更新

使用 GNU 并行您可以执行以下操作:

contents=("$dir"/*)
outdir=/somewhere
parallel tar -cvpzf "${outdir}/{}.tar.gz" "$dir/{}" ::: "${contents[@]##*/}"
于 2013-09-01T11:33:47.203 回答