linux - 如何确保 Ubuntu 中文件复制的完整性

标签 linux ubuntu cp mv

在 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/

相关文章:

c++ - 如何使用 __attribute__((visibility ("default")))?

C++ TCP 服务器比较字符串失败

linux - BASH - 找不到什么 $?特殊变量手段

linux - 在PiTooth.py程序中从第二个终端配对后,另一个终端中的程序仍然是 "waiting for connection"

php - Crontab 无法正常运行

c++ - 创建独立的可执行 c++ 嵌入 Lua 动态库链接? ( eclipse ,Ubuntu)

c++ - 是否可以全局设置 qmake debug?

linux - 如何使用 ftrace 跟踪 shell 命令的所有事件?

linux - 我如何重命名具有不同扩展名的文件夹中的前 5 个文件,同时保持旧文件相同?

linux - 将最新修改的文​​件从所有子目录复制到具有相同子目录结构的新目录