파일 수정 또는 변경으로 간주되는 것은 무엇입니까? 또는 액세스 시간에 영향을 줍니까? 어떤 시점에

이름 변경이 파일 수정 또는 액세스 시간에 영향을 줍니까? 어떤 시점에 어떤 변화가 있는지에 대한 목록이 있습니까?



답변

이름을 바꾸면 변경 시간이 업데이트됩니다.

$ mkdir tmp
$ cd tmp

$ echo abc > a
$ stat a
  File: `a'
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 26h/38d Inode: 5038682     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000 /  zelda   Gid: ( 1000/   zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:06:58.981107444 +0100
 Birth: -

$ mv a b
$ stat b
  File: `b'
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 26h/38d Inode: 5038682     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  zelda)   Gid: ( 1000/   zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:07:14.893238472 +0100
 Birth: -

파일 내용을 읽을 때 액세스 시간이 업데이트됩니다. 실제로 파일을 업데이트 할 때 수정하십시오 (수정을 열면 수정 시간을 변경하기에 충분하지 않습니다).


답변

파일의 mtime에 영향을주는 수정은 파일 데이터의 변경입니다. 0이 아닌 양의 바이트 쓰기 또는 파일 수정으로 끝나는 잘림입니다. 파일을 만들면 mtime도 현재 날짜로 설정됩니다. 파일이 작성되거나 잘리지 않는다고 가정 할 때 파일을 쓰기 위해 열었더라도 mtime에 영향을 미치지 않습니다.

파일에서 읽거나 (0이 아닌 바이트 수를 읽는 경우) 파일을 실행하면 시간이 현재 시간으로 설정됩니다. 읽기 위해 파일을 열면 시간에 영향을 미치지 않습니다. 리눅스에서이가되어 지금은 대부분의 경우에 기본적으로 사용; 는 atime그동안 옵션 복원이 업데이트를 ATIME 마운트 noatime완전히 옵션 비활성화를 탑재합니다.

프로그램은 파일의 mtime과 atime을 변경할 수 있습니다. 이를위한 기본 명령은 touch입니다. 일부 파일 복사 프로그램은 사본을 원본과 동일한 mtime으로 설정합니다 (예 : cp -p또는) rsync -t.

파일의 ctime에 영향을주는 변경은 파일의 메타 데이터 (권한, 소유자, 시간, 링크 수 등)의 변경입니다. 파일 이름을 바꾸면 ctime도 업데이트됩니다. 파일 데이터의 변경 사항도 ctime에 영향을 주지만 파일을 읽더라도 atime이 변경 되더라도 ctime은 변경되지 않습니다. ctime을 현재 시간으로 설정하는 것 이외의 방법으로 ctime을 변경할 수는 없습니다 (루트도 제한되지만 root는 먼저 시스템 시간을 변경하거나 파일 시스템을 포함하는 파티션에 직접 액세스하여 ctime을 간접적으로 설정할 수 있습니다).


답변

다른 답변에서 언급되지 않은 추가 경험적 관찰 :

쓰기 위해 파일을 열면 O_TRUNC파일이 원래 비어 있어도 mtime 이 변경됩니다.

이것은 Linux 3.10의 ext3에서 적어도 그렇습니다.


답변