我有一台安装了 Samba 的设备(上面装有 Ubuntu)。还有一个 cron 作业,每 60 秒从 Samba 共享中复制文件。我现在遇到一种情况,即 cron 作业有时会移动不完整的文件——因为文件仍在通过网络传输。当文件非常大时尤其会发生这种情况。
有没有办法检查文件的完整性?或者,是否有 Samba 设置可以锁定文件(防止其被移动)直到文件完成?
答案1
在文件传输完成之前,该文件将由 Samba 进程使用(打开)。您可以通过命令来测试这一点fuser
。因此,您的移动命令将类似于:
if [[ ! fuser /my/file ]]; then
mv /my/file /somewhere/else
fi
仅当文件已关闭时才会尝试移动文件,这意味着传输已完成。