ctime은 어떻게 바뀌나요?


8

파일의 ctime 타임 스탬프가 변경되는 시점을 정확하게 이해하려고합니다. 많은 곳에서 (예를 들어, 여기에 허용 된 답변에서 ) 파일 속성을 변경하면 ctime도 변경 될 것을 제안합니다. 그러나 이것은 적어도 우분투 12.04에서 사실이 아닌 것 같습니다 (예, 조금 오래된 것입니다 ...) :

cat file.txt > /dev/null

atime을 변경하므로 파일 inode의 파일 속성은 변경되지만 ctime은 변경되지 않습니다.

다른 출처 (예 : herehere )는 파일 속성에 대한 일부 작업 만 실제로 ctime을 변경하지만 정확한 목록은 제공하지 않는다고 제안합니다.

어떤 작업이 ctime을 변경하는지에 대한 정확한 참조는 어디에서 찾을 수 있습니까?


문제가에 관련되어 cat있을 수 있습니다 touch.
Mahdi

답변:


8

유닉스 시스템에는 세 개의 타임 스탬프가 있습니다 :

  • atime: 액세스 시간

    이 타임 스탬프는 읽기 액세스 만 포함 하여 파일에 마지막 으로 액세스 한 시간을 알려줍니다 .

  • ctime: 시간 변경

    이 타임 스탬프는 파일 속성 (inode 정보) 이 마지막으로 변경된 시간을 알려줍니다 . 여기에는 소유권 및 권한이 포함되지만 콘텐츠 변경도이 타임 스탬프의 업데이트를 트리거합니다.

    ctime 업데이트를 트리거하지 않으므로 atime 변경 은 예외 로 보입니다 . 시간 업데이트를 트리거하기에 충분한 간단한 읽기 액세스로 인해 파일 속성이 변경되지 않기 때문일 수 있습니다. ctime의 주요 목적 중 하나는 백업 도구가 파일이 변경되었는지 확인하도록 돕는 것입니다. atime은 누군가가 파일을 읽었 기 때문에 변경된 시간을 업데이트하기 위해 이러한 도구와 백업을 업데이트하는 것은 관련이없는 정보입니다.

    확실하지 않지만 일부 사람들은이 동작 (시간 변경이 ctime을 업데이트하지 않음)이 relatime메모리의 성능상의 이유로 inode에서 시간 업데이트를 캐시하고 지연시키는 기본 파일 시스템 의 마운트 옵션 (예 :) 때문이라고 생각합니다 특정 조건에서 디스크의 실제 inode에만 적용됩니다 (ctime 업데이트 트리거).
    @kos는 그것을 시도했으며 분명히`strictatime '옵션으로 FS를 마운트 할 때도 시간이 변경되면 ctime이 업데이트되지 않는 것으로 보입니다.

  • mtime: 수정 시간

    이 타임 스탬프는 파일 내용이 마지막 으로 수정 된 시기를 알려줍니다 .


따라서 파일 속성이 수정되지 않았으므로 ctime이 아닌 atimecat FILENAME 만 사용하여 간단한 읽기 액세스 가 변경됩니다. 변경된 시간 은 계산되지 않습니다.


정확히 요점입니다. 변경된 시간이 계산되지 않습니까? 파일 속성이 아닙니까?
VeryHardCoder

@VeryHardCoder 나는 그 시점에서 내 대답을 정교화하려고 시도하고 몇 가지 설명을 추가했습니다.
바이트 사령관
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.