我有一个非常大的文件夹,我想 gzip 并将它们拆分为存档:
#!/bin/bash
dir=$1
name=$2
size=32000m
tar -czf /dev/stdout ${dir} | split -a 5 -d -b $size - ${name}
有没有办法用 gnu 并行加速这个?谢谢。
我有一个非常大的文件夹,我想 gzip 并将它们拆分为存档:
#!/bin/bash
dir=$1
name=$2
size=32000m
tar -czf /dev/stdout ${dir} | split -a 5 -d -b $size - ${name}
有没有办法用 gnu 并行加速这个?谢谢。
有了它,你可以有这样的命令:
tar -c "${dir}" | pigz -c | split -a 5 -d -b "${size}" - "${name}"
使用它的选项-p
,您还可以指定要使用的线程数(默认为在线处理器的数量,如果未知,则为 8)。请参阅pigz --help
或man pigz
了解更多信息。
更新
使用 GNU 并行您可以执行以下操作:
contents=("$dir"/*)
outdir=/somewhere
parallel tar -cvpzf "${outdir}/{}.tar.gz" "$dir/{}" ::: "${contents[@]##*/}"