작성된 날짜 이전의 수정 된 날짜를 가진 파일을 가질 수 있습니까? 이 이벤트가 발생하는 조치는 무엇입니까?
작성된 날짜 이전의 수정 된 날짜를 가진 파일을 가질 수 있습니까? 이 이벤트가 발생하는 조치는 무엇입니까?
답변:
추출 된 .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 에서이 우분투 요청 답변에 표시된 것처럼 -d
플래그를 사용하여 파일의 마지막 수정 시간을 쉽게 변경할 수 있습니다 . Linux 파일 시스템에서 파일을 생성 한 날짜에 대한 개념은 실제로 없습니다 ( Unix & Linux에서 추가로 읽음 ).touch
여기서 주목해야 할 가장 중요한 점은 파일 수정 시간이 실제로 특별하지 않다는 것입니다. 다른 데이터와 마찬가지로 저장됩니다. 데이터를 실제로 마지막으로 읽거나 읽은 시점을 알 수있는 방법이 없습니다 .
여기에서 CD와 같은 1 회 기록 매체를 제외하고는 마지막 수정 시간 또는 작성 시간을 저장하는 드라이브의 비트를 직접 수정하는 것이 항상 가능하다는 것을 알 수 있습니다.
보다 실제적으로 이것은 다른 답변에서 언급했듯이 일반적인 운영 체제 내에서도 가능합니다. Windows에서 이는 WinAPI SetFileTime
기능에 의해 제공되며 utime
Linux에서 이를 수행 할 수 있습니다 . touch
이러한 API를 기반으로 빌드 와 같은 도구
이러한 API에 대한 가장 일반적인 합법적 인 사용은 수정 시간을 유지하는 것입니다 (예 : 파일 복사, 아카이브에서 추출 등).