我正在通过终端使用bash命令在mac计算机上工作。
我正在运行DNA测序仪,在48小时内产生约3-5百万个文件。出于速度原因,这些文件将保存到计算机的SSD中。我想使用fswatch和rsync命令监视目录,并在生成它们时将这些文件传输到服务器,以减少测序后的长传输时间。
这是我提出的命令。
fswatch -o ./ | (while read; do rsync -r -t /Source/Directory /Destination/Directory; done)
但我担心由于大量的文件> 300万和大的总尺寸>这些工具100gb可能难以跟上。有更好的策略吗?
感谢您的帮助!
答案 0 :(得分:3)
您将使用的命令可能有效但会出现一些我想避免的性能问题。
这意味着对于" fswatch"输出的每一行。会有一个" rsync"实例开始,而" rsync"会越来越大。
48小时是很多时间,复制文件(~100GB)无论如何都不会花费这么长时间(磁盘到磁盘非常快,千兆网络也非常快)。
相反,我会在生成过程中定期(例如30分钟)建议执行rsync -a --delete /source /destination
,最后一次,确保没有遗漏任何内容。一个简短的脚本可以包含:
#!/bin/bash
while ps -ef | grep -q "process that generates files"; do
echo "Running rsync..."
rsync -a --delete /source /destination
echo "...waiting 30 minutes"
sleep 1800 # seconds
done
echo "Running final rsync..."
rsync -a --delete /source /destination
echo "...done."
...只需替换生成文件的"进程"无论名称如何,生成文件的过程都在" ps -ef"输出正在运行。根据需要调整时间,我认为在30分钟内创建~2GB的数据,可以在几分钟内复制。
该脚本将确保" rsync"它不应该运行多次,它会专注于复制文件而不是经常比较源和目的地。
选项" -a" (存档)意味着您使用的选项和更多(-rlptgoD)," - 删除"将删除" / destination"上存在的任何文件但并不存在于" / source" (如果临时文件被复制但在最终结构中实际上不需要),则很方便。
答案 1 :(得分:1)