파일이 생성되기 전에 수정된 것처럼 보일 수 있습니까?

파일이 생성되기 전에 수정된 것처럼 보일 수 있습니까?

생성 날짜 이전의 수정 날짜가 있는 파일을 가질 수 있습니까? 어떤 조치로 인해 이 이벤트가 발생합니까?

답변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이 우분투 답변에 물어보세요. 실제로 Linux 파일 시스템에는 파일 생성 날짜에 대한 개념이 없습니다(Unix 및 Linux에서 추가 읽기).

답변3

추출된 .tar 아카이브를 고려하십시오. 일반적으로 추출된 파일에는 아카이브 콘텐츠에서 할당된 마지막 수정 타임스탬프가 있습니다(시간 여행자가 아닌 이상 일반적으로 과거입니다). 파일 시스템에 관한 한 이러한 파일은 방금 생성된 것입니다.

기존 파일의 수정 시간을 변경하는 유틸리티도 있습니다. 예를 들어 Linux에서는 다음과 같습니다.만지다명령.

답변4

여기서 주목해야 할 가장 중요한 점은 파일 수정 시간이 실제로 특별한 것이 아니라 다른 데이터와 마찬가지로 저장된다는 것입니다. 데이터가 언제 생성되었는지 알 수 있는 방법이 없습니다.실제로마지막으로 쓰거나 읽습니다.

여기서 우리는 마지막 수정 시간이나 생성 시간을 저장하는 드라이브의 비트를 직접 수정하는 것이 항상 가능하다는 것을 알 수 있습니다(CD와 같은 1회 쓰기 미디어 제외).

보다 실질적으로 다른 답변에서 언급했듯이 일반적인 운영 체제 내에서도 가능합니다. Windows에서는 WinAPI를 통해 제공됩니다.SetFileTime함수를 사용하면 이 작업을 수행할 수 있습니다.utime리눅스에서. touch이러한 API를 기반으로 구축하는 것과 같은 도구입니다 .

이러한 API의 가장 일반적이고 합법적인 용도는 파일 복사, 아카이브에서 추출 등의 경우 수정 시간을 보존하는 것입니다.

관련 정보