我正在将包含大量数据(fastq 文件)的文件(并行)下载到一个目录中。我的空间很快就用完了。因此,我得到了以下脚本(来自这里(略作修改)在下载文件时对其进行压缩:
inotifywait -m ./ -e create -e moved_to |
while read dir action filepath; do
echo "The file '$filepath' appeared in directory '$dir' via '$action'"
# compress file
if [[ "$filepath" =~ .*fastq$ ]]; then
pigz --best $filepath
fi
done
这有助于我稍后用完硬盘空间,但我仍然下载文件的速度比压缩文件的速度快。有没有办法并行化压缩过程,以便我可以同时压缩多个文件?(我假设上面的代码没有这样做)
我能想到的一种(可能)实现这一点的方法是多次从不同的终端运行脚本,但我很确定这是一种非常糟糕的方法
答案1
我为你做了一些东西,我把它命名为 Cerberus,来自看门狗。
您下载的文件名不得包含空格,因此,如果下载时文件名包含空格,请重命名并删除空格,否则将无法检测到。
使用 gcc -ocerberus cerberus.c 进行编译
您需要一个子目录来存放压缩文件。压缩后您的原始文件将被删除,如果您不希望发生这种情况,请注释掉第 63 行。您可以在定义部分(第 9-11 行)更改压缩(工作目录)目录名称、压缩程序和压缩文件扩展名。如果您的文件名超过 100 个字符,请在第 12 行增加 MAXNAME。
祝你好运!