ファイルの変更日が作成日よりも前になる可能性はありますか? このイベントが発生する原因となるアクションは何ですか?
答え1
ファイルを最初から作成すると、作成時刻は「現在」、変更日は「現在」になります。このファイルを別のドライブにコピーするとします。Windows は変更時刻を保持しますが、そのファイルの作成時刻は、そのドライブにファイルをコピーした時刻 (つまり、ファイルが作成された時刻) に設定されます。それドライブ)。とても簡単です。
それは実際に正しいです:
- ファイルの内容が最後に変更された時刻は変更時刻に保存されます。
- このドライブ上でファイルが作成された時刻は、作成時刻に保存されます。
答え2
Windows では、ファイルの作成時刻と変更時刻を設定する (つまり、偽装する) のは非常に簡単です。コンピュータの時計を変更する必要はなく、ローカル管理者のアクセス権も必要ありません。必要なのは、問題のファイルへの書き込みアクセス権だけです。
PowerShellでファイルの作成時間を設定するにはSetCreationTime
:
[System.IO.File]::SetCreationTime("C:\path\to\file.ext", (Get-Date "8/8/2088"))
最終更新時刻を設定するにはSetLastWriteTime
:
[System.IO.File]::SetLastWriteTime("C:\path\to\file.ext", (Get-Date "7/4/1776"))
Linuxでは、次のように-d
フラグを使ってファイルの最終更新時刻を簡単に変更できます。touch
このAsk Ubuntuの回答Linuxファイルシステム上のファイルには作成日という概念は実際には存在しません(Unix & Linux のさらなる情報)。
答え3
抽出された .tar アーカイブについて考えてみましょう。通常、抽出されたファイルには、アーカイブの内容から割り当てられた最終変更タイムスタンプが付きます (タイムトラベラーでない限り、通常は過去になります)。ただし、ファイルシステムに関する限り、これらのファイルは作成されたばかりです。
既存のファイルの変更時刻を変更するユーティリティも存在します。たとえばLinuxでは、これは触る指示。
答え4
ここで最も重要なことは、ファイルの変更時刻は特別なものではなく、他のデータと同じように保存されるということです。データがいつ変更されたかを知る方法はありません。実は最後に書き込まれた、または最後に読み取られた。
ここから、(CD のような一度だけ書き込み可能なメディアを除いて)最終変更時刻や作成時刻を保存しているドライブ上のビットを直接変更することが常に可能であることがわかります。
より実際的には、他の回答者が指摘しているように、これは一般的なオペレーティングシステム内でも実行可能です。Windowsでは、これはWinAPIによって提供されています。SetFileTime
関数で、これは次のように実行できますutime
Linux では、touch
このような API をベースに構築されたツールが存在します。
これらの API の最も一般的な正当な使用法は、ファイルのコピー時やアーカイブからの抽出時など、変更時刻を保存することです。