티스토리 뷰
오늘 재미있는 현상을 발견했다.
윈도우에서 파일을 삭제하고 같은 이름으로 파일을 다시 만들면 이미 삭제된 파일의 속성(파일 생성시간)이 적용된다.
파일의 생성시간으로 무언가를 판단해야하는 상황에서 위 문제의 해결이 필수적이었다.
이것저것 찾아보니 윈도우의 파일시스템 터널링 기법이 그 원인이었다.
파일시스템 터널링 목적
사용자는 파일을 수정할떄 그 파일의 생성날짜는 그대로, 수정날짜만 변경 되기를 원한다.
하지만 실제 파일이 수정되는 내부적인 동작은 그 파일의 임시파일을 만들고 작업이 완료되면 그 임시파일을 본 파일로 만들게 된다.
즉 새로운 파일이 생성된 것이다.
이 문제를 해결하기 위해 파일시스템 터널링을 사용하고(이게 전부는 아니라고 생각한다...일부의 예인 것 같다)
파일의 정보는 캐시 형태로 약 15초정도 저장된다.
따라서 캐시유지시간인 15초후 같은 이름으로 파일을 만들면 그 전에 같은 이름의 파일의 생성시간이 아닌 실제 생성시간이 속성값으로 들어간다.
해결방법
근본적인 해결방법은 윈도우 레지스트리 수정이다.
하지만 윈도우 기본설정을 바꾼다는게 이유없이 찝찝하다.(위 목적이 전부가 아니라면 어디선가 문제가 발생할수도있지않을까하는 걱정...?)
레지스트리 변경방법을 쉽게 찾아볼 수 있고 딱히 부작용에 대해서 나오는 건 없는 것으로봐서 큰 문제가 생길 것 같지는 않지만
해결방법이라기보단 저 문제를 피할 수 있는 방법은 새로운 폴더에서 작업을 하면 된다.
참고
http://forensic-proof.com/archives/4829 //한글자료로 매우 설명이 잘되어있다. 감사한다.
https://blogs.msdn.microsoft.com/oldnewthing/20050715-14/?p=34923/ 영어 : 유명한 사람의 글 인듯하다 읽어보길 추천한다. 재미있다.