使用临时文件进行"近原子"传输的含义?

pad*_*ddy 7 scp temporary-files

我正在读linux中的'SCP'命令手册页,最后它说

"没有尝试使用临时文件进行"近原子"转移".

模糊地我可以猜到它是什么,但任何人都可以清楚地告诉我这句话的技术定义.

谢谢,稻田

小智 7

原始副本将如Craig所述,使用临时文件然后将临时文件mv到预期目标.mv是一个原子提供源和目标位于同一个分区上.只有打开tmp文件的文件操作才能读取内容.对于在分区之间移动的文件,rename()不是原子的,因为必须复制数据.

这假设你当然是scp到UNIX系统:)


Cra*_*nes 5

Atomic 意味着在 scp 完成之前,没有其他任何东西可以读取或写入文件。“近原子”是指文件复制到临时位置(在目标机器/磁盘上)然后移动到最终位置的常见做法。移动操作比复制快得多(相比之下“接近原子”),但它不一定是真正意义上的原子。在非原子移动期间,另一个进程仍可能以不一致的状态读取文件。

  • 关于移动仅接近原子的观点不一定正确。至少在 Linux 上,只要目标和目的地在同一分区上,就可以保证移动是原子的。在这种情况下,移动只是元数据的更改,因此整个文件会立即出现在目的地。另请参阅下面的其他答案。 (2认同)