
Мы пытаемся сделать устаревшим наш старый сервер домашних папок 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, не будут этого делать.