我正在将具有大量数据(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
这有助于我稍后用完硬盘空间,但我下载文件的速度仍然比压缩速度快。有没有办法并行化压缩过程,以便我同时压缩多个文件?(我假设上面的代码没有这样做)
我能想到(也许)实现这一点的一种方法是多次从不同的终端运行脚本,但我很确定这是一种非常糟糕的方法
我为你做了一些东西,我给它起名叫 Cerberus,来自看门狗。
https://pastebin.com/yiqajYfT
您下载的文件名不得包含空格,因此如果在下载时包含空格,请重命名并删除空格,否则将无法检测到它们。
使用 gcc -ocerberus cerberus.c 编译
您需要一个子目录来存放压缩文件。您的原始文件将在压缩后被删除,如果您不希望发生这种情况,请注释第 63 行。您可以在第 9-11 行的定义部分更改压缩(工作目录)目录名称、压缩程序和压缩文件扩展名。如果您的文件名超过 100 个字符,请在第 12 行增加 MAXNAME。
祝你好运!