역사적인 이유가 있나요? Stat
마지막 액세스 시간, 마지막 수정 시간, 마지막 변경 시간을 저장하지만 생성 시간은 저장하지 않습니다! 중요한 정보 아닌가요?
개발자들이 왜 그렇게 중요한 정보를 빠뜨리는지 이해가 안 됩니다. 일부 파일 시스템은 여기에 표시된 대로 데이터를 저장합니다.질문. 그러나 분명히 이 정보의 중요성은 과소평가되어 왔습니다. 왜 그럴까요?
노트:
stat -c %W <filename>
내 시스템(fedora 22)에서 0을 반환합니다.
답변1
물론 역사적인 대답은 원래 생성 시간을 저장하지 않았으며 누구도 이 새로운 기능을 추가할 필요성을 느끼지 못했다는 것입니다.
생성 시간을 저장하지 않는 데는 그럴 만한 이유가 있는데, 이는 개념이 매우 잘못 정의되어 있기 때문입니다. 시스템이 특정 시간을 기록하고 이를 "생성 시간"이라고 부르는 경우 이는 많은 경우 유용한 시간이 아닙니다.
많은 응용 프로그램은 먼저 임시 파일에 쓴 다음 파일 이름을 변경하여 이전 파일을 덮어쓰는 방식으로 파일을 저장합니다. 파일을 쓰는 동안 응용 프로그램이나 시스템이 충돌하면 임시 파일만 남게 되는 반면 덮어쓰기 방법은 손상된 파일을 그대로 남겨두기 때문에 이 방법은 파일을 제자리에 덮어쓰는 것보다 더 좋습니다. 그러나 이 접근 방식은 파일 생성 시간을 파일이 실제로 생성된 날짜로 정의하면 대부분의 데이터 파일이 수정 시간과 동시에 생성되거나 1초도 지나지 않은 시점에 생성된다는 것을 의미합니다. 따라서 생성 시간은 어떠한 정보도 제공하지 않습니다.
이는 새 파일이 실제로 이전 파일의 새 버전이므로 생성 시간을 상속해야 함을 애플리케이션이 선언하도록 요구하여 변경할 수 있습니다. 그러나 이를 위해서는 자동으로 업데이트될 수 있는(모든 쓰기, 읽기, 모든 메타데이터 변경 시) 기존 타임스탬프(콘텐츠 수정, 액세스 및 inode 변경)와는 달리 훨씬 더 많은 복잡성이 필요합니다.
다른 경우에는 창조 시간에 대해 논쟁이 있습니다. 보존된 메타데이터( cp -p
, , ...) 가 포함된 파일을 복사할 때 rsync -a
복사본을 만드는 중입니까, 아니면 생성된 시간이 포함된 파일을 복사하는 중입니까? 백업에서 파일을 복원할 때 생성 시간을 복원해야 합니까, 아니면 복구 시간을 복원해야 합니까?
파일 생성 시간을 의미 있게 지정하려면 버전 제어에 입력하세요. 그런 다음 해당 파일에 대한 첫 번째 커밋 시간을 포함하도록 생성 시간을 정의할 수 있으며 해당 정보는 기록되고 유지됩니다.
답변2
최신 파일 시스템은 파일 객체 생성 시간을 저장합니다. 미리 이루어지지 않은 이유 중 하나는 파일 생성 시간, 즉 파일 객체(inode)가 언제 생성되어야 하는지, 파일 내용(데이터)이 언제 생성되어야 하는지에 대한 합의가 이루어지지 않았기 때문일 수 있습니다. 백업에서 복원하기 위해 파일을 생성할 때 수행할 작업을 설명합니다.