作成日より前の修正日を持つファイルを持つことは可能ですか?このイベントが発生する原因となるアクションは何ですか?
作成日より前の修正日を持つファイルを持つことは可能ですか?このイベントが発生する原因となるアクションは何ですか?
回答:
抽出された.tarアーカイブを検討してください。通常、抽出されたファイルには、アーカイブコンテンツから割り当てられた最終変更のタイムスタンプがあります(タイムトラベラーでない限り、これは通常、過去のものです)。ファイルシステムに関する限り、これらのファイルは作成されたばかりです。
既存のファイルの変更時刻を変更するユーティリティも存在します。たとえばLinuxでは、これはtouchコマンドです。
cp -p
とのようにそれを真似ものrcp -p
とscp -p
、同様にrsync
して-t
かは-a
、ソースからMODTIMEを取ります。
ファイルを最初から作成すると、作成時刻は「今」、変更日は「今」になります。このファイルを別のドライブにコピーするとします。Windowsは、修正時刻を保持しますが、そのファイルの作成時間は、あなたがそのドライブにファイルをコピーした時に(ファイルが作成された、すなわち時間に設定されているドライブ)。そのような単純な。
それは実際に正しいです:
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では、このAsk Ubuntu answerに示されているように、の-d
フラグでファイルの最終変更時刻を簡単に変更できます。Linuxファイルシステム上のファイルの作成日という概念は実際にはありません(詳細については、UnixとLinuxを参照してください)。touch
ここで注意すべき最も重要なことは、ファイルの変更時刻は特別なものではなく、他のデータと同じように保存されるということです。データが実際に最後に書き込まれたか、最後に読み取られたかを知る方法はありません。
ここから、CDのようなライトワンスメディアを除いて、最終変更時刻または作成時刻を保存するドライブのビットを直接変更することが常に可能であることがわかります。
より実際的には、他の回答が指摘しているように、これは一般的なオペレーティングシステム内からも実行できます。Windowsでは、これはWinAPI SetFileTime
関数によって提供され、utime
Linuxでこれを行うことができます。touch
これらのAPIの上に構築するようなツール。
これらのAPIの最も一般的な正当な使用法は、ファイルのコピーやアーカイブからの抽出など、変更時間を維持することです。