我们正试图废弃我们的旧的Linux主文件夹服务器。 我们仍然有一些人正在积极使用它。 我们的计划是将过去六个月内没有人使用的家庭文件夹更改为只读。 我们有Mac和Windows客户端通过SMB访问这些共享。
所以我的问题是:是否有一个命令会告诉我最后一次目录或任何其子目录已被修改?
要么
自某date以来已被修改的父目录列表?
这将告诉我哪些用户仍在积极使用他们的主文件夹。
您可能遇到的问题是修改目录中的文件不一定会更改目录时间戳。 这是一个例子:
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
注意如何完整replacetest1的内容不更新目录时间戳。 所以你的查找命令可能应该是查找文件以及目录,如下所示:
find . -mtime +180 -print0 | xargs -0 chmod aw
或者你可能想要使文件和目录的时间标准不同:
find . -type d -mtime +120 -print0 | xargs -0 chmod aw find . -type f -mtime +180 -print0 | xargs -0 chmod aw
对于使用SMB文件共享的许多(大多数?)应用程序,这将不适用,因为它们通常将其内容写入同一目录中的临时文件,然后删除原始文件,然后将临时文件重命名为原始文件名。 但是像Access这样的“数据库”应用程序不会这样做。