mvは2つのファイルシステム間の原子的な仕事ですか?

mvは2つのファイルシステム間の原子的な仕事ですか?

コマンドを介して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)なかった遅いファイルシステムエラーがある可能性があります。

関連情報