업데이트해야 해요생성 시간가짜 파일을 '지금'으로 삭제하고 다시 생성하면 됩니다. 이상하게도 새로 생성된 파일은 원본 파일의 생성 시간을 상속받은 것처럼 보입니다!
제가 보여드리겠습니다:
> 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
이것으로 내 시연을 마치겠습니다. 두 가지 질문이 발생합니다.
^^ 그 분이 하신 말씀이군요.
어떻게 해결할 수 있나요?
좋습니다. 이에 대해 좀 더 자세히 설명하겠습니다.
Windows OS/NTFS의 내부 메커니즘이 무엇인지 아는 사람이 있습니까? 일부 파일 메타데이터 캐싱이 발생하고 캐시 무효화에 시간 제한이 있는 것 같습니다.
원본과 동일한 이름의 최신 파일을 얻을 수 있는 방법에 대한 제안 사항이 있습니까
ctime
? 배치 스크립트, 레지스트리 해킹, 프로그래밍 방식 또는 갖고 있는 정보 등 어떤 제안이라도 환영합니다.
답변1
답변:
- 이 프로세스를 '파일 시스템 터널링'(양자 역학에서 파생됨)이라고 하며 제가 아는 한 원래 win 95용으로 설계되었습니다. 프로그램이 파일을 저장하고 덮어쓰는 경우를 운영체제에서 처리하는 것이 필요합니다. . 이 경우 사용자는 일반적으로 생성 날짜(및 짧은 파일 이름)가 변경되지 않을 것으로 예상하지만 터널링을 사용하지 않으면 생성 날짜가 마지막 저장 시간을 반영하게 됩니다. 보다:Windows 파일 시간에 대한 몇 가지 알림,파일 시스템 터널링의 묵시적인 역사
- 문제를 해결하는 방법에는 두 가지가 있습니다.
- 저장/생성 후 생성시간을 즉시 수정하여
- 레지스트리 설정별(전체 운영 체제용):
파일 터널링 설정은 Windows 레지스트리 키 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem에 의해 제어됩니다.
터널링 캐시 시간을 늘리려면 DWORD 값 MaximumTunnelEntryAgeInSeconds를 수정/추가합니다. 기본 캐시 시간은 15초입니다. 터널링을 비활성화하려면 DWORD 값 MaximumTunnelEntries를 수정/추가하고 0으로 설정하세요.
답변2
저는 Windows를 사용하지 않지만 해결 방법을 찾은 것 같습니다.
Win32는 분명히 허용합니다파일 생성 시간 수정, 사용하여파일시간 설정기능.
Win32로 앱을 작성하지 않는 경우 PowerShell을 사용할 수 있습니다. 기반으로비슷한 stackoverflow 답변:
C:\> powershell (ls your-file-name-here).CreationTime = Get-Date
답변3
ctime이 아닌 atime을 사용하십시오. 액세스 시간은 액세스 시 업데이트되지 않으므로 사실상 생성 시간입니다.더 이상