コマンドを介して2つのファイルシステム間でファイルを移動するのはmv
原子的な作業ですか?
答え1
EXDEVエラー(man 2の名前変更)を参照してください。
EXDEV oldpath and newpath are not on the same mounted filesystem. (Linux permits a filesystem to be mounted at multiple points, but rename() does not work across different mount points, even if the same filesystem is mounted on both.)
システムコールを介してファイルシステム間を移動できないため、mvが実行する操作はユーザースペースのコピーと削除です。これはアトミックではありません。
答え2
「原子」が何を意味するかによって異なります。
システムコールとは異なり、rename()
2つのファイルシステム間のファイルコピーは通常アトミックではありません。のコピールーチンがmv
呼び出されなかったため、検出されfsync(2)
なかった遅いファイルシステムエラーがある可能性があります。