
我們正在嘗試棄用舊的 Linux 主資料夾伺服器。不過,我們仍然有一些人正在積極使用它。我們的計劃是將過去六個月內沒有人使用過的主資料夾更改為唯讀。我們有 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 這樣的「資料庫」應用程式不會這樣做。