`mv`はいつファイルのタイムスタンプを変更し、いつ変更しませんか?

`mv`はいつファイルのタイムスタンプを変更し、いつ変更しませんか?

タイムスタンプを変更せずにディレクトリを移動するmvがディレクトリを変更したときのタイムスタンプを示します。

外付けハードドライブから別の外付けハードドライブにファイルを転送すると、ディレクトリのタイムmvスタンプも変更されます。

ローカルファイルシステムのディレクトリにアクセスしても、ディレクトリmvのタイムスタンプは変更されません。

タイムスタンプとファイルのその他の属性はいつmv変更され、いつ変更されないのですか?ありがとうございます。

ベストアンサー1

他のシステムでこの問題が発生したことを覚えており、今のテストで示したのと同じようには機能しませんでした。私はこれが実装の違いだと思います。以下に説明します。

ほとんどの実装では、mvタイムスタンプを変更せずにファイルを移動しようとします。ただし、ポストパート移動による効果は考慮されない場合がある。

これは基本的に次のことを意味します。

  • ファイルシステムでファイルまたはディレクトリを移動しても、ファイルまたはディレクトリのタイムスタンプは変更されません。

  • ファイルが別のファイルシステムに移動されると、タイムスタンプは秘密のコピーであるため、現在の時刻にリセットされます。ただし、mv通常は以前のタイムスタンプをできるだけ復元するのに十分スマートであるため、アクセス時間と変更時間は同じように「保持」されますが、変更タイムスタンプは現在の時刻に更新されます。

  • 空のディレクトリを別のファイルシステムに移動する場合も、同じルールが適用されます。

  • コンテンツを含むディレクトリが別のファイルシステムに移動されると、新しいディレクトリが作成され、mv権限mkdirと所有権がコピーされ、元の時刻が復元されます。その後、ディレクトリの内容がそのディレクトリに移動され、タイムスタンプが更新されます。いくつかの実装はこの問題を修正します(例:GNU coreutils mv8.29)、他の実装ではそうではありません(たとえば、この動作をテストした以前の実装を覚えています)。

  • mv〜するいつもファイル/ディレクトリが移動されたソースディレクトリと、ファイル/ディレクトリが移動されたディレクトリのタイムスタンプを更新します。 (デフォルトではこのディレクトリを変更するので、関連ファイルシステムに修正タイムスタンプがある限り、修正タイムスタンプも更新されます。

おすすめ記事