해결된 질문
작성
·
58
·
수정됨
0
① 강의에서는 압축해체시 c-time 변경된다고 설명 되어 있으나, 기존 윈도우에 있던 파일 (txt, xlsx)을 압축 후 해제하여
mac 타임을 비교해보았는데 c-time 변경된 사항이 없습니다 .
※ 어느것도 변경된 정보가 없습니다.
② 단순 파일을 열고 닫을시 a-time등 변하지않나요?
- 테스트 당시에는 변하지않음
③ 위와 별게의 질문으로 파일의 논리적 크기의 값 정보는 있으나 디스크 할당크기가 0바이트로 표기되는 파일이 간혹있는데 어떤 이유때문인가요?
답변 1
0
안녕하세요 yangcm23 님!
질문주신 순서대로 답변드릴게요~
1. 압축해제시의 Created Time 변경
먼저 답변드리기 전에 사용하신 압축해제 프로그램이 반디집 이실까요?
우선, 변경되는것이 맞습니다 ! A라는 파일을 압축을 한 뒤에 해당 압축 파일을 풀어보면
원 파일의 시간정보와 다르게 압축을 해제한 시간으로 생성된 것으로 변경이 됩니다.
없던 파일이 압축을 해제하면서 새로 추가된것이기때문입니다.
다만 압축프로그램인 반디집의 경우 이렇게 압축해제시 시간정보가 변경되는 것을
방지하기 위해서 프로그램 설정에서 원 파일의 시간정보를 유지시키는 옵션을 기본값으로 해놓고 있습니다. 모든 파일시스템에 적용되는 것은 아니고, NTFS 파일시스템이고, 압축포맷이 Zip일 경우에만 가능한데, 파일의 시간정보 등의 메타정보가 저장되는 MFT에서 해당 파일의 시간정보를 가져와 압축시에 기록해두고, 압축해제시에 이 정보를 그대로 가져다 써주는 형태입니다.
위의 옵션을 켜고 끄는 것에 따라서 차이를 보기 위해서 테스트를 해보면,
먼저 아래는 원 파일인 textfile.txt 의 속성으로, 생성시간이 오후 4:43:58 입니다.
위의 textfile.txt 파일을 압축할 경우,
1) 먼저 반디집 설정에서 시간정보를 기록하는 옵션을 체크하여 압축 후에 다시 압축을 풀어보면
생성시간이 원파일과 동일합니다.
2) 반대로 반디집 설정에서 시간정보를 기록하는 옵션을 꺼주고 압축 후에 다시 압축을 풀어보면
생성시간이 오후 10:38:52로(실제 압축해제시간 오후 10:38:52) 원 파일에서 변경된것을
확인할 수 있습니다.
위에 보신 것처럼 압축해제후 확인한 파일의 생성시간이 원 파일과 동일한 경우는
1) 반디집으로 원 파일의 시간정보를 저장하도록 체크하고
2) 파일시스템이 NTFS 이며,
3) 압축포맷이 .zip 인 경우에만 적용이 됩니다.
반디집을 제외한 다른 압축프로그램(알집 등)은 해당 옵션이 없는 것으로 알고 있는데
알집을 제외하고는 다른 프로그램들은 직접 확인을 해보진 않아서 참고만 부탁드릴게요~
글로 길게 쓰다보니 이해가 안되실수도 있는데, 직접 비교하면서 해보시면 바로 이해가 되실거예요 꼭 직접 한번 해보시는것을 추천합니다!
2. 접근시간이 변경되지 않는 경우
아시는것처럼 파일을 열어보거나, 파일명을 변경하거나 등 파일에 접근하면 접근시간이 변경됩니다.
그런데 실제로 변경이 안되는것처럼 보이실거예요.
이부분은 뭔가 명확한 답을 드리기가 조금 어려운데,
우선 윈도우즈 정확히는 NTFS 파일시스템에서 이런 변경에 대한 시간기록에 대해 기록을 안하게끔 기본값으로 설정되어있기 때문입니다.
이러한 이유는 파일이 생성되거나 수정되는 것은 당연히 기록이 되야하겠지만, 접근기록은 상대적으로 중요도가 떨어질뿐만 아니라, 그 빈도 역시 너무 많기때문에(단순히 파일의 속성 정보를 본다거나 하는 등의 행위)그런 한 것을 모두 기록을 하게되면 시스템에 과부하를 줄수 있어서 기본값으로 이러한 기록을 하지 않기 때문입니다.
1) 변경방법
① 레지스트리 변경
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
에 들어가시면 [NtfsDisableLastAccessUpdate] 와 관련되며,
기본값은 80000001(기록안함) 이며, 이 값을 80000000으로 변경하시면 기록하는것으로 변경됩니다.
물론 입력가능한 값은 총 4개로 사용자모드/시스템모드 등이 있으나 이부분은 따로 설명을 안드릴게요.
② 명령프롬프트(Cmd)나 파워쉘에서 명령을 입력하여 변경하는 방법도 있습니다.(관리자권한 필수)
현재상태확인 / fsutil behavior query disablelastaccess
명령프롬프트나 파워쉘에서 위의 명령어를 입력 하시면
DisableLastAccess = 0 (사용자 관리, 사용 안 함)
위와 같은 결과가 출력되는데, 0이면 기록, 1이면 기록안함 인것을 확인할수 있으며
상태변경 / fsutil behavior set disablelastaccess 0
위의 명령어로 Disablelastaccess 를 활성화(1)/비활성화(2) 가능합니다.
(활성화:기록X / 비활성화: 기록O)
우선 기본적인것은 이렇게 되는데, 제가 처음에 명확한 답을 드리기 어렵다고 말씀드린것이
이부분에 대해서 뭔가 깔끔하게 공식적으로 나온 내용을 찾기가 쉽지가 않아서입니다.
온라인상에 이와 관련된 문서들을 찾아보다보면
마지막으로 기록된 Access Time으로부터 1시간 이상 차이난 시점에서 접근행위가 발생하면 그때는 그 행위의 시간을 기록한다는 내용도 찾아볼수가 있는데, 이런 시간기록에 대한 정책도 조금씩 변경이 되기때문에, 온라인에서 확인한 그와 관련된 내용들이 현시점에서도 적용이 되는지, 또 변경된 내용의 선후관계를 파악을 해야하는 문제가 있어서입니다.
명확한 답변을 드리지 못한 점 다시 한번 죄송하다는 말씀을 드립니다 ㅜ_ㅜ
3. 실제 용량(logical)이 잡히지만 디스크 할당크기(Physical)이 0인 경우
보통 이런 경우는 용량이 매우 작은 경우 입니다.
기본적으로 실제용량에 맞게 클러스터가 부여되고 그렇게 부여된 클러스터의 용량이
디스크 할당크기가 되는데, 단순한 텍스트파일 등의 경우 용량이 매우 적은 경우에는 그걸 그대로
클러스터에 할당해서 저장하기에는 낭비가 너무 심하기때문에 이런 경우에는 MFT에 바로 저장합니다. 그래서 디스크 할당 크기가 0으로 잡히게 됩니다.
아래는 메모장에 '0123456789' 을 반복적으로 입력하면서 용량을 다르게 한 3개의 파일의 속성정보입니다.
100바이트, 406바이트는 디스크 할당크기가 0인 반면, 814바이트는 클러스터 할당이 되어
디스크할당크기가 4kb로 잡히는 것을 확인할수 있습니다.
이처럼 용량이 매우 적은 경우에는 용량 낭비를 막기 위해서 MFT에 바로 기록을 하기때문에
디스크 할당 크기가 0이 될수 있다는 정도만 이해하고 넘어가시면 될것 같습니다 !
궁금하셨던 점이 어느정도 해결되셨을까요? 접근시간에 대해서 명확한 답변을 드리지 못해서 저 역시 조금 찝찝함이 있네요; 이 부분은 나중이라도 좀 더 정확한 정보를 확인하게 되면 추가적으로 안내해드리겠습니다~
막힌 하수구 뚫인듯 해결 되었습니다 .
상세히 설명해 주셔서 너무 감사합니다.