解決策 1:
mv
というステートメントから始めましょう。 常にアトミックであるとは限りません。
また、原子性がファイル名ではなく、ファイルの内容を参照していることも確認しましょう。
個々のファイルについて、mv
によって実行される移動または名前変更 ファイルが同じファイルシステム内で移動される場合、アトミックです。原子性は、ファイルがある場所または別の場所にのみあることを保証するものではありません。ファイルが「短時間」同時に両方の場所のファイルシステムに存在する可能性は十分にあります。原子性が保証するのは、提供されたときに、ファイルの内容が部分的ではなく完全に瞬時に利用可能になることです。 mv
だと想像できます そのような状況では、ln
で実装できた可能性があります 続いて rm
.
mv
実行する移動があるファイルシステムから別のファイルシステムへの移動である場合、またはリモートファイルシステムが mv
を実装できない場合は、間違いなくアトミックではありません。 ローカルでの操作。これらの場合 mv
cp
に相当するものによって実装されていると言えます 続いて rm
.
次に、複数のファイルにわたる原子性の問題に移ります。 mv
せいぜいファイルごとにのみアトミックであるため、一緒に移動するファイルが多数ある場合、実装はそれらが一度に1つずつ移動されるようになっています。よろしければ mv file1 dir; mv file2 dir; mv file3 dir
.
ファイルのグループを宛先に同時に表示する必要がある場合は、それらをディレクトリに配置し、そのディレクトリを移動することを検討してください。この単一のオブジェクト (ディレクトリ) はアトミックに移動できます。
解決策 2:
No. mv dir1/*
mv dir1/file1 && mv dir1/file2 && mv dir1/fileN
と同じです .個々の動きはアトミックですが、完全なセットではありません。