파일의 atime, mtime 또는 ctime을 변경하면 어떤 영향이 있습니까?
- 상위 디렉토리의 atime, mtime 또는 ctime 및
- 상위 디렉토리의 atime, mtime 또는 ctime?
답변1
를 사용하면 이 정보를 쉽게 얻을 수 있습니다 stat
. 상위 디렉터리의 경우 다음을 보면 파일이 변경되었는지 쉽게 확인할 수 있으며 "계층 구조 위"에는 영향을 주지 않습니다 /
.
root@pooh:/home/anthon-mint# stat /
File: ‘/’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 804h/2052d Inode: 2 Links: 30
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-02-22 09:57:14.028146463 +0100
Modify: 2015-01-01 10:34:05.528461374 +0100
Change: 2015-01-01 10:34:05.528461374 +0100
Birth: -
시스템은 지속적으로 파일을 변경하므로 이 값은 현재 시간에 가까워야 합니다.
새 디렉토리를 생성한 다음 그 안에 파일을 생성하면 디렉토리의 액세스 및 수정 시간이 변경됩니다.
$ mkdir tmp
$ stat tmp
File: ‘tmp’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 700h/1792d Inode: 144141 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 1001/ anthon) Gid: ( 100/ users)
Access: 2015-02-27 16:19:02.523585508 +0100
Modify: 2015-02-27 16:19:02.523585508 +0100
Change: 2015-02-27 16:19:02.523585508 +0100
Birth: -
$ touch tmp/bla
$ stat tmp
File: ‘tmp’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 700h/1792d Inode: 144141 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 1001/ anthon) Gid: ( 100/ users)
Access: 2015-02-27 16:19:02.523585508 +0100
Modify: 2015-02-27 16:19:18.639585445 +0100
Change: 2015-02-27 16:19:18.639585445 +0100
Birth: -
액세스 시간은 변경되지 않지만 새 파일을 생성하면 수정 및 변경 시간이 변경됩니다.
이제 파일을 다시 터치하세요.
$ touch tmp/bla
$ stat tmp
File: ‘tmp’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 700h/1792d Inode: 144141 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 1001/ anthon) Gid: ( 100/ users)
Access: 2015-02-27 16:19:02.523585508 +0100
Modify: 2015-02-27 16:19:18.639585445 +0100
Change: 2015-02-27 16:19:18.639585445 +0100
Birth: -
$
디렉터리는 변경되지 않지만 새 파일이 생성되지 않기 때문에 디렉터리 정보는 변경되지 않습니다.
객체의 mtime, atime 또는 ctime 변경기존 파일포함된 디렉터리나 해당 디렉터리의 상위 디렉터리에는 아무런 영향을 미치지 않습니다.
답변2
파일의 inode가 아직 캐시에 없으면 최대 디렉터리의 atime(액세스 시간) 필드가 업데이트됩니다. 그러나 최신 Linux 커널의 기본 설정은 relatime
이 플래그를 사용하여 파일 시스템을 마운트하는 것입니다. 즉, 수정 시간(mtime) 이후에 파일이나 디렉터리에 액세스하고 현재 atime이 mtime보다 이전인 경우에만 atime이 업데이트된다는 의미입니다.
mtime(수정 시간)은 파일(또는 디렉터리 또는 기타 항목)이 삭제되거나 이름이 바뀌거나 추가되거나 디렉터리 이름이 변경(이동)되는 등 디렉터리가 실제로 수정될 때만 업데이트됩니다.
디렉토리 inode의 내용이 변경될 때마다 권한, 소유자 및 mtime을 포함하여 ctime(inode 변경 시간)이 수정됩니다.