ファイルの状態を変更せずに chmod(atime)

ファイルの状態を変更せずに chmod(atime)

私はこれらの(ファイルと)ディレクトリを変更せずにディレクトリ構造を取得したいと思いますchmodatime

このようなファイル構造から始まる

$ 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

関連情報