2013-02-26 34 views
7

我正在讀「SCP」命令的手冊頁在Linux中,它到底說使用臨時文件「接近原子」傳輸的含義?

接近原子「使用臨時文件傳輸‘’沒有試圖在製造」。

隱約可以猜出它是什麼,但任何人都可以清楚地告訴我這句話的技術定義。

感謝, 水稻

回答

4

原子就意味着沒有別的可以讀取或寫入文件,直到SCP已經完成它。 「近原子」是指將文件複製到臨時位置(在目標機器/磁盤上),然後將移動到最終位置的常見做法。移動操作比副本(比較「近原子」)要快得多,但它並不一定是真正意義上的原子。在非原子移動期間,另一個進程仍然可以讀取處於不一致狀態的文件。

+0

感謝回答我的問題.... – paddy 2013-04-18 11:14:38

+1

點左右移動僅爲接近原子不一定是正確的。只要目標和目標位於同一個分區上,至少在Linux上的移動都保證是原子的。在這種情況下,移動只是元數據的變化,以便整個文件立即出現在目的地。另請參閱下面的其他答案。 – LiKao 2017-02-08 09:05:57

5

一個原子副本將作爲克雷格國家,使用臨時文件,然後mv臨時文件到預定的目的地。 mv是提供源和目標的原子在同一個分區上。只有打開tmp文件的文件操作才能夠讀取內容。由於必須複製數據,因此對於在分區之間移動的文件,rename()不是原子性的。

這裏假定您scp'ing到當然:)的UNIX系統

相關問題