在 Ubuntu 中,如果文件/A/largefile.foo 通过“cp”或“mv”移动到/B/largefile.foo,如何确保在尝试再次移动该文件之前写入整个文件时间到/C/largefile.foo?
案例: 1. 远程自动脚本 X 开始 rsync 到一个非常大文件的目标文件夹 A。 2. 本地计算机上的 cron 作业每小时将文件从文件夹 A 移动到文件夹 B,但我不想复制部分文件(我只想要完全上传完成的文件)
案例: 1. 一个cron作业定期将文件从文件夹B移动到文件夹C,但我不想复制部分文件(我只想要完全上传完成的文件)
注意: 我正在寻找一种不需要添加pid文件的解决方案
最佳答案
对于第一种rsync
情况,您可以将--partial-dir
选项与--delay-updates
结合使用,它将将部分文件写入单独的位置,完成后将它们重命名到位。
您应该确保部分目录与目标位于同一文件系统上,因此重命名将是原子的。
对于第二种情况,使用mv
(再次假设一个文件系统),这将是原子的。
参见 rsync manual了解更多信息
关于linux - 如何确保 Ubuntu 中文件复制的完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3440623/