수정 날짜와 inode 수정 날짜의 차이점은 무엇입니까?

수정 날짜와 inode 수정 날짜의 차이점은 무엇입니까?

방금 다음 사이트에서 몇 가지 흥미로운 정보를 발견했습니다 man stat.

a, m, c, B
The time file was last accessed or modified, of when the inode was last changed, or the birth time of the inode.

그런데 파일의 마지막 수정 시간과 인덱스 노드의 수정 시간의 차이점은 무엇입니까? 나는 거의 동일한 두 개의 디렉터리에서 마지막으로 수정된 파일만 복사할 수 있는 bakup-bash 스크립트를 작성 중이므로 어떤 값을 사용하기를 선호하는지 알아야 합니다. :)

답변1

Access: 2014-05-20 11:04:27.012146373 -0700
Modify: 2014-04-05 20:59:32.000000000 -0700
Change: 2014-05-20 11:04:22.405479507 -0700

사용할 권리: 파일 내용을 마지막으로 확인한 시간입니다.
조정: 파일 내용이 마지막으로 변경된 시간입니다.
변화: 파일 inode가 마지막으로 변경된 시간입니다.

이것변화시간에는 수정 권한, 소유권 등이 포함되지만조정시간은 구체적으로 파일 내용을 나타냅니다.

또는 더 정확하게는 (에서 man 2 stat):

st_atime 필드는 execve(2), mknod(2), Pipe(2), utime(2) 및 read(2)(0바이트 이상) 등의 파일 액세스를 통해 변경됩니다. mmap(2)과 같은 다른 루틴은 st_atime을 업데이트할 수도 있고 업데이트하지 않을 수도 있습니다.

필드 st_mtime은 mknod(2), truncate(2), utime(2) 및 write(2)(0바이트 이상)과 같은 파일 수정에 의해 변경됩니다. 또한 디렉터리에서 파일을 생성하거나 삭제하면 디렉터리의 st_mtime이 변경됩니다. st_mtime 필드는 소유자, 그룹, 하드 링크 수 또는 모드 변경으로 인해 변경되지 않습니다.

inode 정보(예: 소유자, 그룹, 링크 수, 모드 등)를 쓰거나 설정하여 st_ctime 필드를 변경합니다.

흥미롭게도 파일 시간을 직접 조작하는 것은 ctime을 현재 시계 시간으로 변경하는 inode 수정으로 간주됩니다. 따라서 ctime을 다음과 같이 설정할 수 있습니다.현재의하지만 다른 두 시간처럼 다른 시간으로 설정할 수는 없습니다. 이것은 만든다시간파일이 언제 발견되는지 알아내는 유용한 카나리아시간뒤로 옮겨졌을 수도 있습니다.

또한 파일 내용을 변경하지 않고도 inode를 변경할 수 있습니다(예:시간변경될 수 있나요?시간변경), 그 반대는 아닙니다. 파일의 내용을 수정할 때마다시간.

관련 정보