私はこれらの(ファイルと)ディレクトリを変更せずにディレクトリ構造を取得したいと思います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
?