파일의 상태를 변경하지 않고 chmod(atime)

파일의 상태를 변경하지 않고 chmod(atime)

나는 이러한 (파일 및) 디렉토리를 변경하지 않고 디렉토리 구조를 얻을 수 있기를 원합니다 chmod.atime

이런 파일 구조로 시작하면

$ tree test/
test/
├── test1.txt
└── text2.txt

atime파일 및 디렉토리 목록

$ find test/ -exec stat --printf='name: %n atime: %x\n' {} \;
name: test/          atime: 2019-02-28 11:28:24.418369586 +0100  
name: test/text2.txt atime: 2019-02-28 11:28:03.609919183 +0100  
name: test/test1.txt atime: 2019-02-28 11:27:58.101799544 +0100  

그럼 chmod저것들

$ chmod -R 'u=Xrw,g=Xrw,o=Xr' test

이는 atime디렉토리의 s를 변경합니다(그렇습니다. s는 영향을 받지 않습니다) mtime.

$ find test/ -exec stat --printf='name: %n atime: %x\n' {} \;
name: test/          atime: 2019-02-28 11:38:30.590740343 +0100  
name: test/text2.txt atime: 2019-02-28 11:28:03.609919183 +0100  
name: test/test1.txt atime: 2019-02-28 11:27:58.101799544 +0100  

이것을 피하는 쉬운 방법이 있습니까? atime수정 전에 콘텐츠를 저장하고 수정 후에 재설정하는 스크립트를 확실히 작성할 수 있습니다 . 하지만 더 쉬운 방법이 있나요?

답변1

귀하의 예에서는 디렉토리만 변경되었습니다. 의 마운트 옵션에 nodiratime(디렉터리만) 또는 noatime(를 포함한 파일 및 디렉터리 ) 를 추가하여 atime을 비활성화할 수 있습니다 . 그러면 ctime만 변경해야 합니다.nodiratime/etc/fstab

재정의하지 않는 한, 명령을 실행할 때 커널 기본값이 relatime표시됩니다 mount.

설치(8)

 relatime
              Update  inode  access  times relative to modify or change time.  Access time is only
              updated if the previous access time was earlier than the current  modify  or  change
              time.   (Similar  to  noatime,  but it doesn't break mutt or other applications that
              need to know if a file has been read since the last time it was modified.)

              Since Linux 2.6.30, the kernel defaults to the  behavior  provided  by  this  option
              (unless  noatime  was  specified),  and the strictatime option is required to obtain
              traditional semantics.  In addition, since Linux 2.6.30, the file's last access time
              is always updated if it is more than 1 day old.

그런데. chmod는 여기서 작동하지 않습니다. 그런 뜻 이었습니까 chmod -R u=rwx,g=rwx,o=rwx test?

관련 정보