
私たちは古い Linux ホーム フォルダ サーバーを廃止しようとしています。ただし、まだアクティブに使用している人が数人います。私たちの計画は、過去 6 か月間誰も使用していないホーム フォルダを読み取り専用に変更することです。Mac クライアントと Windows クライアントは、SMB 経由でこれらの共有にアクセスしています。
そこで質問なのですが、ディレクトリまたはそのサブディレクトリが最後に変更された日時を教えてくれるコマンドはありますか?
または
特定の日付以降に変更された親ディレクトリのリストですか?
これにより、どのユーザーがまだホーム フォルダーをアクティブに使用しているかがわかります。
答え1
遭遇する可能性のある問題は、ディレクトリ内のファイルを変更しても、必ずしもディレクトリのタイムスタンプが変更されるわけではないということです。次に例を示します。
paulgear@localhost:~/tmp$ echo test1 > test1
paulgear@localhost:~/tmp$ ls -la
total 4
drwxr-xr-x 1 paulgear paulgear 18 Jan 15 09:29 .
drwxr-xr-x 1 paulgear paulgear 3976 Jan 15 09:26 ..
drwxr-xr-x 1 paulgear paulgear 0 Jan 15 09:29 test
-rw-r--r-- 1 paulgear paulgear 6 Jan 15 09:29 test1
paulgear@localhost:~/tmp$ date
Wed Jan 15 09:30:07 EST 2014
paulgear@localhost:~/tmp$ echo test2 > test1
paulgear@localhost:~/tmp$ ls -la
total 4
drwxr-xr-x 1 paulgear paulgear 18 Jan 15 09:29 .
drwxr-xr-x 1 paulgear paulgear 3976 Jan 15 09:26 ..
drwxr-xr-x 1 paulgear paulgear 0 Jan 15 09:29 test
-rw-r--r-- 1 paulgear paulgear 6 Jan 15 09:30 test1
test1 の内容を完全に置き換えても、ディレクトリのタイムスタンプが更新されなかったことに注意してください。そのため、find コマンドは、次のようにディレクトリだけでなくファイルも検索する必要があります。
find . -mtime +180 -print0 | xargs -0 chmod a-w
または、ファイルとディレクトリの時間基準を異なるものにしたい場合もあります。
find . -type d -mtime +120 -print0 | xargs -0 chmod a-w
find . -type f -mtime +180 -print0 | xargs -0 chmod a-w
SMB ファイル共有を使用する多くの (ほとんどの?) アプリケーションでは、通常、同じディレクトリ内の一時ファイルに内容を書き込み、元のファイルを削除してから、一時ファイルの名前を元の名前に変更するため、これは当てはまりません。ただし、Access などの「データベース」アプリケーションでは、これは実行されません。