Windows 7 파일 시스템: Flabbergasted - 파일 삭제 및 재생성: 생성 시간은 변경되지 않습니다! 이유와 해결 방법은 무엇입니까?

Windows 7 파일 시스템: Flabbergasted - 파일 삭제 및 재생성: 생성 시간은 변경되지 않습니다! 이유와 해결 방법은 무엇입니까?

업데이트해야 해요생성 시간가짜 파일을 '지금'으로 삭제하고 다시 생성하면 됩니다. 이상하게도 새로 생성된 파일은 원본 파일의 생성 시간을 상속받은 것처럼 보입니다!

제가 보여드리겠습니다:

> touch a.txt       //create a new file
> dir /T:C          //creation time
02/27/2013  02:04 PM                 0 a.txt

> dir /T:W          //modification time
02/27/2013  02:04 PM                 0 a.txt

//wait a bit...
> touch a.txt       //update modified-time
> dir /T:C
02/27/2013  02:04 PM                 0 a.txt

> dir /T:W          //mod-time changed, as expected
02/27/2013  02:05 PM                 0 a.txt

> del a.txt
> touch a.txt       //recreate file
> dir /T:C          //same original ctime !!
02/27/2013  02:04 PM                 0 a.txt

> dir /T:W          //the actual time the 2nd file was created
02/27/2013  02:06 PM                 0 a.txt

> del a.txt
> touch b.txt       //ok, create a file with a different name
> dir /T:C          //ctime as expected
02/27/2013  02:07 PM                 0 b.txt

> mv b.txt a.txt
> dir /T:C          //again, ctime of original file!
02/27/2013  02:04 PM                 0 a.txt

> del a.txt
> touch c.txt       //create a file with a different name, again
> dir /T:C          //ctime as expected
02/27/2013  02:08 PM                 0 c.txt

> cp c.txt a.txt    //this time copy it...
> dir /T:C          //ctime of a.txt is that of original file!
02/27/2013  02:04 PM                 0 a.txt
02/27/2013  02:08 PM                 0 c.txt

//wait longer...

> del *
> touch d.txt
> dir /T:C
02/27/2013  02:22 PM                 0 d.txt

> cp d.txt a.txt
> dir /T:C          //lo and behold, the ctime has changed.
02/27/2013  02:22 PM                 0 a.txt
02/27/2013  02:22 PM                 0 d.txt

이것으로 내 시연을 마치겠습니다. 두 가지 질문이 발생합니다.

뭐야?!

  1. ^^ 그 분이 하신 말씀이군요.

  2. 어떻게 해결할 수 있나요?

좋습니다. 이에 대해 좀 더 자세히 설명하겠습니다.

  1. Windows OS/NTFS의 내부 메커니즘이 무엇인지 아는 사람이 있습니까? 일부 파일 메타데이터 캐싱이 발생하고 캐시 무효화에 시간 제한이 있는 것 같습니다.

  2. 원본과 동일한 이름의 최신 파일을 얻을 수 있는 방법에 대한 제안 사항이 있습니까 ctime? 배치 스크립트, 레지스트리 해킹, 프로그래밍 방식 또는 갖고 있는 정보 등 어떤 제안이라도 환영합니다.

답변1

답변:

  1. 이 프로세스를 '파일 시스템 터널링'(양자 역학에서 파생됨)이라고 하며 제가 아는 한 원래 win 95용으로 설계되었습니다. 프로그램이 파일을 저장하고 덮어쓰는 경우를 운영체제에서 처리하는 것이 필요합니다. . 이 경우 사용자는 일반적으로 생성 날짜(및 짧은 파일 이름)가 변경되지 않을 것으로 예상하지만 터널링을 사용하지 않으면 생성 날짜가 마지막 저장 시간을 반영하게 됩니다. 보다:Windows 파일 시간에 대한 몇 가지 알림,파일 시스템 터널링의 묵시적인 역사
  2. 문제를 해결하는 방법에는 두 가지가 있습니다.
  • 저장/생성 후 생성시간을 즉시 수정하여
  • 레지스트리 설정별(전체 운영 체제용):

파일 터널링 설정은 Windows 레지스트리 키 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem에 의해 제어됩니다.

터널링 캐시 시간을 늘리려면 DWORD 값 MaximumTunnelEntryAgeInSeconds를 수정/추가합니다. 기본 캐시 시간은 15초입니다. 터널링을 비활성화하려면 DWORD 값 MaximumTunnelEntries를 수정/추가하고 0으로 설정하세요.

답변2

저는 Windows를 사용하지 않지만 해결 방법을 찾은 것 같습니다.

  1. Win32는 분명히 허용합니다파일 생성 시간 수정, 사용하여파일시간 설정기능.

  2. Win32로 앱을 작성하지 않는 경우 PowerShell을 사용할 수 있습니다. 기반으로비슷한 stackoverflow 답변:

    C:\> powershell  (ls your-file-name-here).CreationTime = Get-Date
    

답변3

ctime이 아닌 atime을 사용하십시오. 액세스 시간은 액세스 시 업데이트되지 않으므로 사실상 생성 시간입니다.더 이상

관련 정보