歴史的な理由はありますか?Stat
最後のアクセス時間、最後の変更時間、最後の変更時間を保存しますが、生成時間は保存しません!重要な情報ではないですか?
開発者がなぜそれほど重要な情報を欠いているのか理解できません。一部のファイルシステムは、ここに示すようにデータを保存します。質問。しかし、明らかにこの情報の重要性は過小評価されてきました。なぜですか?
メモ:
stat -c %W <filename>
私のシステム(fedora 22)から0を返します。
答え1
もちろん、歴史的な答えは、もともと生成時間を保存しておらず、誰もこの新しい機能を追加する必要性を感じなかったということです。
作成時間を保存しない理由は、その理由が非常に間違って定義されているためです。システムが特定の時間を記録し、それを「生成時間」と呼ぶ場合、これは多くの場合有用な時間ではありません。
多くのアプリケーションは最初に一時ファイルに書き込んでから、ファイル名を変更して古いファイルを上書きするようにファイルを保存します。ファイルの書き込み中にアプリケーションまたはシステムがクラッシュすると一時ファイルのみが残りますが、上書き方法は破損したファイルを残すため、この方法はファイルを上書きするよりも優れています。ただし、このアプローチでは、ファイルの作成時間をファイルが実際に作成された日付として定義すると、ほとんどのデータファイルが変更時刻と同時に作成されるか、1秒経過していないときに作成されます。したがって、生成時間はいかなる情報も提供しません。
これは、新しいファイルが実際に古いファイルの新しいバージョンであるため、アプリケーションが生成時間を継承する必要があることを宣言するように要求することによって変更できます。ただし、これには自動的に更新できる(すべての書き込み、読み取り、すべてのメタデータを変更するとき)、既存のタイムスタンプ(コンテンツの変更、アクセス、およびinodeの変更)とは異なり、はるかに複雑さが必要です。
他のケースでは、創造時間について議論があります。保存されたメタデータ(cp -p
、、、...)を含むファイルをコピーするときにrsync -a
コピーを作成していますか、または生成された時間を含むファイルをコピーしていますか?バックアップからファイルを復元するときに作成時間を復元する必要がありますか、または復元時間を復元する必要がありますか?
ファイルの作成時間を意味のあるものにするには、バージョン管理に入力します。その後、そのファイルへの最初のコミット時間を含めるように作成時間を定義でき、その情報は記録され維持されます。
答え2
最新のファイルシステムはファイルオブジェクトの作成時間を保存します。事前に行われていない理由の1つは、ファイル作成時間、つまりファイルオブジェクト(inode)をいつ作成するのか、ファイルの内容(データ)をいつ作成するのかについての合意がなされなかったことです。バックアップから復元するためにファイルを作成するときに実行する作業について説明します。