web-dev-qa-db-ja.com

作成前にファイルが変更されているように見えますか?

作成日より前の修正日を持つファイルを持つことは可能ですか?このイベントが発生する原因となるアクションは何ですか?

9
AlexanderRD

抽出された.tarアーカイブを検討してください。通常、抽出されたファイルには、アーカイブコンテンツから割り当てられた最終変更タイムスタンプが含まれます(タイムトラベラーでない限り、これは通常、過去のものです)。ファイルシステムに関する限り、これらのファイルは作成されたばかりです。

既存のファイルの変更時間を変更するユーティリティも存在します。たとえば、Linuxでは touch コマンドです。

8
Lekensteyn

Windowsでは、ファイルの作成時刻と変更時刻を簡単に設定(必要に応じて改ざん)できます。コンピュータの時計を変更する必要はありません。ローカル管理者のアクセスも必要ありません。必要なのは、問題のファイルへの書き込みアクセスだけです。

SetCreationTime を使用してPowerShellでファイルの作成時間を設定するには:

[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では、 this Ask Ubuntu answer に示すように、touch-dフラグを使用してファイルの最終変更時刻を簡単に変更できます。 Linuxファイルシステムでのファイルの作成日という概念は実際にはありません( nixおよびLinuxでさらに読む )。

7
Ben N

ファイルを最初から作成すると、作成時刻は「今」、変更日は「今」になります。このファイルを別のドライブにコピーするとします。 Windowsは変更時刻を保持しますが、そのファイルの作成時刻は、ファイルをそのドライブにコピーした時刻(つまり、ファイルがthatドライブに作成された時刻)に設定されます。そのような単純な。

それは実際に正しいです:

  • ファイルの内容が最後に変更された時刻は、変更時刻に格納されます。
  • このドライブにファイルが作成された時刻は、作成時刻に格納されます。
7
Ro-ee

はい。 Windowsでは、ファイルを変更して保存します。ファイルをコピーします。コピーのプロパティを見ると、以前に変更された日付があることがわかります。

3
David

ここで注意すべき最も重要なことは、ファイルの変更時間は実際には特別ではなく、他のデータと同じように保存されるということです。データが実際にいつ最後に書き込まれたか、またはいつ読み取られたかを知る方法はありません。

ここから、いつでも(CDのようなライトワンスメディアを除いて)、最終変更時刻または作成時刻を格納するドライブのビットを直接変更することが常に可能であることがわかります。

より実際的には、他の回答が指摘しているように、これは一般的なオペレーティングシステム内からも実行できます。 Windowsでは、これはWinAPI SetFileTime 関数によって提供され、Linuxでは utime を使用してこれを実行できます。 touchなどのツールは、これらのAPIの上に構築されます。

これらのAPIの最も一般的な正当な用途は、変更時間を維持することです。ファイルのコピー時、アーカイブからの抽出時など。

1
Bob

私の経験では、1台以上のコンピューターがファイルの変更に使用され、そのうちの1台のシステム時刻が間違っている場合です。システム時刻が間違っている最も一般的な3つの原因は、順不同です。

  1. すべてのコンピューターが自動的に夏時間に変更されるように構成されているわけではありません。
  2. 人々はコンピュータのシステム時刻を「誤って」変更しました。
  3. 人々は冗談としてコンピュータのシステム時刻を「意図的に」変更しました。
0
Tai Paul