「cp -a」を使用しても生成時間が維持されないのはなぜですか?

「cp -a」を使用しても生成時間が維持されないのはなぜですか?

作成時間が含まれていることを理解する-aために、いくつかのディレクトリをコピーしました。preserve=all

cp -a ./* /mnt/destination/

ターゲットの結果ディレクトリを確認すると、生成時間が現在時刻に設定され、そしてその内容は創作当時を保存するようです。

なぜ作成日ではないのですか?トップレベルディレクトリは保持されますか?

ソースはHFS +、ターゲットはbtrfsです。


ターゲットとソースのディレクトリリストの抜粋:

$ ls -hal --time=creation
total 16K
drwxrwxr-x 1 andreas andreas   74 sep  2 23:25  .
drwx------ 1 andreas andreas  310 apr 26 17:08  ..
drwx------ 1 andreas andreas 2,3K sep  2 23:45  Library

$ ls -hal --time=creation /mnt/source
total 8,1M
drwxrwxr-x  1 andreas andreas   15 mar 28  2022  .
drwxr-x---+ 3 root    root    4,0K aug  9  2022  ..
drwx------  1 andreas andreas   95 apr 15  2019  Library

修正する

答えとコメントでサブディレクトリの日付を確認したとき、私が間違いを犯したことは間違いないという結論に達しました。私はやった。私のせい – 結果に対する期待が私のビジョンをぼかした。質問のこの部分が削除されました。

ベストアンサー1

従来のUnixファイルシステムには作成時間がなく、ctimeしかありません。時間は変化時間ではなく創造時間だ。時刻の変更は、現在の時刻に変更されていない限り、オペレーティングシステムの呼び出しでは設定できません。権限を変更するか、atime または mtime を変更すると、ctime が現在時刻に設定されます。

作成時間はPOSIXの一部ではありませんが、多くのファイルシステムでそれを追加するようです。Linuxリポジトリ作成時のファイルシステムは何ですか?

ただし、これをサポートするファイルシステムでも標準化されていないため、POSIXツールで作成時間のサポートが保証されず、これをサポートするファイルシステムでも設定ができない可能性があります。場合によっては設定され、時には誤って設定されたり一貫していないように設定されている場合は、さまざまなサポートに関連するツールがいくつかあるか、そのツールが部分的なサポートのみを提供できます。

Linux固有のstatx関数呼び出しは、atime、btime、ctime、およびmtimeをサポートします。時間作成時間が表示されます。しかし、これは単に読む時間です。 (さまざまなファイルシステムは、生成時間、btime、crtime、otimeなど、さまざまな方法で生成時間を参照します。)

詳しくは、gnu coreutils cpはutimensatPOSIX-1.2008に準拠していると主張する関数呼び出しを介して設定時間を記録します。この呼び出しは修正のみをサポートします。アルテムそして時間しかし、これを見ると、POSIXがatimeとmtimeのみをサポートしているか(ctimeは設定できません)、それともctimeとbtimeがデフォルトで変更できず、オペレーティングシステムによる変更のみを許可して適切に設定するためかはわかりません。現在のイベント時間です。

おすすめ記事