如果 cron 脚本尝试在另一个进程写入目录的同时复制该目录,会发生什么情况?

如果 cron 脚本尝试在另一个进程写入目录的同时复制该目录,会发生什么情况?

例如,如果我有一个 java 进程(每 2 小时一次)备份一个大文件(例如 500mb),并将其放入 HDD A 上的文件夹 A 中,并且我想安排一个 cron 脚本来复制整个文件夹A 每天一次到 HDD B...如果 cron 脚本在 java 进程正在写入文件夹 A 的过程中碰巧触发,会发生什么情况?会等吗?它会忽略尚未写入的文件吗?

答案1

一般来说,Unix 命令对文件的处理方式是一样的,无论文件是否打开并正在写入。因此,如果 cron 作业用于cp复制目录,则复制的内容仅取决于命令检查目录时目录中的内容cp。如果文件在cp访问时仅部分写入,则会生成部分写入的副本。如果要防止此类情况发生,则需要在协作进程之间实施锁定方案,以防止并发访问目录。

相关内容