FILE_ATTRIBUTE_ARCHIVE  에 대한 MSDN 의 설명을 보면 


A file or directory that is an archive file or directory. Applications typically use this attribute to mark files for backup or removal . 


라고 되어 있는데, 뜻이 잘 전달되지 않는다.


https://github.com/rust-lang/rust/issues/46484 에서 답을 찾았는데,

The FAT driver sets the Archive flag whenever you modify a file and a DOS-era backup tool operating in incremental backup mode can then go through, save copies of any files marked "Archive", and then clear the bit to indicate to its future self that they haven't changed since the previous incremental backup.

(In other words, the "archive" part is short for "archival needed" or "please archive")

라고 댓글이 달려있다.

실제로,  FILE_ATTRIBUTE_NORMAL 와 FILE_ATTRIBUTE_ARCHIVE 를 가지고 실험해 보면

* SetFileAttribute( FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_NORMAL ) 을 하면, FILE_ATTRIBUTE_ARCHIVE 속성만 남는다.

* SetFileAttribute( 0 ) 하면, FILE_ATTRIBUTE_ARCHIVE 속성이 남는다.

* 물론 SetFileAttribute( FILE_ATTRIBUTE_NORMAL ) 하면 FILE_ATTRIBUTE_NORMAL 속성만 남는다.

* 물론 SetFileAttribute( FILE_ATTRIBUTE_ARCHIVE) 하면 FILE_ATTRIBUTE_ARCHIVE 속성만 남는다.



즉, 두가지 속성은 배타적이고, 파일을 수정하면 OS 는 기본적으로 FILE_ATTRIBUTE_ARCHIVE 속성을 준다. 하지만, FILE_ATTRIBUTE_NORMAL 도 파일로 처리해야 한다.



Posted by 키플러
,