【问题标题】:Meaning of "near-atomic" transfer using temporary files?使用临时文件进行“近原子”传输的含义?
【发布时间】:2013-02-11 20:03:29
【问题描述】:

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

“没有尝试使用临时文件进行“近乎原子”传输”。

我隐约能猜到它是什么,但谁能清楚地告诉我这句话的技术定义。

谢谢, 稻谷

【问题讨论】:

    标签: scp temporary-files


    【解决方案1】:

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

    这当然假设您正在 scp'ing 到 UNIX 系统:)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 移动只是接近原子的观点不一定正确。至少在 Linux 上,只要目标和目标位于同一分区上,就可以保证移动是原子的。在这种情况下,移动只是元数据中的更改,因此完整文件会立即出现在目的地。另请参阅下面的其他答案。
      • @LiKao 我说“......但它不是必然原子......”。正如不保证在可能使用scp 的每个场景和配置中。那么我的答案“不一定正确”是什么?
      猜你喜欢
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多