仅在文件完全传输到源服务器时拉取文件

时间:2018-04-23 11:37:53

标签: unix sftp scp

我需要从源服务器提取文件。此文件通常约为500mb +,并且在生成时没有特定的时间。

我的拉动脚本每5分钟运行一次但是我想在拉动之前确保文件在源服务器中完全100%完成。无论如何要知道文件是部分还是完全转移?

1 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点。一种可靠的方法是写入此文件的源系统在复制完成后创建一个标记文件,您可以检查标记文件是否存在以确保复制完成。此外,还有其他方法,例如在完成复制后重命名文件以指示复制完成。

如果更改源系统不在您的控制范围内,则可以使用“lsof”命令。 Linux lsof命令列出有关在系统上运行的进程打开的文件的信息。 (lsof命令本身代表“打开文件列表”。)

lsof <filename> | wc -l

如果计数为0,则没有使用此文件的进程表明文件复制操作已完成。但是,只有当您确定在使用lsof检查其状态时没有其他进程打开/使用此文件时,此操作才有效 希望这有帮助