仅在文件完全传输到源服务器时才拉取文件
Pull file only when it is completely transferred to source server
我需要从源服务器中提取文件。这个文件通常在 500mb+ 左右,并且没有特定的生成时间。
我的拉取脚本每 5 分钟运行一次,但是我想确保文件在拉取之前 100% 完整地存在于源服务器中。无论如何要知道文件是部分还是全部传输?
有多种方法this.One确定的方法是写入此文件的源系统在复制完成后创建一个标记文件,您可以检查标记文件是否存在以确保复制做完了。还有其他方法,例如在复制完成后重命名文件以指示复制完成。
如果更改源系统超出您的控制范围,您可以使用 "lsof" 命令。 Linux lsof 命令列出有关系统上进程 运行 打开的文件的信息。 (lsof 命令本身代表“打开文件列表”。)
lsof <filename> | wc -l
如果计数为0,表示没有进程使用该文件,表示文件复制操作完成。但是,只有当您使用 lsof 检查其状态时确定没有其他进程 opening/using 此文件时,这才会起作用
希望这有帮助
我需要从源服务器中提取文件。这个文件通常在 500mb+ 左右,并且没有特定的生成时间。
我的拉取脚本每 5 分钟运行一次,但是我想确保文件在拉取之前 100% 完整地存在于源服务器中。无论如何要知道文件是部分还是全部传输?
有多种方法this.One确定的方法是写入此文件的源系统在复制完成后创建一个标记文件,您可以检查标记文件是否存在以确保复制做完了。还有其他方法,例如在复制完成后重命名文件以指示复制完成。
如果更改源系统超出您的控制范围,您可以使用 "lsof" 命令。 Linux lsof 命令列出有关系统上进程 运行 打开的文件的信息。 (lsof 命令本身代表“打开文件列表”。)
lsof <filename> | wc -l
如果计数为0,表示没有进程使用该文件,表示文件复制操作完成。但是,只有当您使用 lsof 检查其状态时确定没有其他进程 opening/using 此文件时,这才会起作用 希望这有帮助