За несколько лет в моем $HOME
каталоге появилось много скрытых файлов и каталогов.
Я хотел бы постоянно удалять ненужные.
Как я могу узнать, какие приложения создали эти скрытые файлы и каталоги.
Как я могу быть уверен, что безопасно удалить скрытые файлы и каталоги, и ничего важного не будет потеряно и ничто, зависящее от них, не перестанет работать?
Ответы:
Вы можете просто временно сместить их.
Это позволит найти все файлы в вашем
$HOME
каталоге - без повторения в дочерних каталогах - к которым не было доступа в течение года. Это обновит время доступа для всех них прямо сейчас, а затем переместит их все в каталог с именем.trash
. Если вы столкнетесь с какими-либо проблемами между временем запуска и временем, когда вы решите начать удаление старых файлов,~/.trash
вы можете попытаться переместить некоторые из них назад и посмотреть, не было ли причиной того, что вы положили в корзину.источник
relatime
вместо этого. fromman mount
::relatime
обновить время доступа к индоду относительно времени изменения или изменения. Время доступа обновляется только в том случае, если предыдущее время доступа было раньше, чем текущее время изменения или изменения. (Аналогичноnoatime
, но это не нарушает работуmutt
других приложений, которым необходимо знать, был ли файл прочитан с момента последнего изменения.) И в любом случае использовать-m
и-mtime
для работы с modtime. или что угодно.Если вы являетесь пользователем вашей системы, вы можете использовать функцию ядра аудита, чтобы получить максимальную информацию о том, кто / когда / что получил доступ / создал / изменил файлы. посмотрите этот учебник для примеров со вкусом Debian
Если у вас нет root-доступа, вы можете использовать crontab или скрипт с бесконечным циклом + sleep для запуска файлов lsof & grep в вашем homedir. Смотрите man-страницу lsof . Тем не менее, он будет отображать только те приложения, которые имеют файловый дескриптор, открытый в момент запуска lsof. Если приложение откроет файл, отредактирует его, затем закроет, вы не увидите этого изменения в lsof.
один-лайнер, как это должно сделать работу:
lsof -u $(id -u) 2>/dev/null |grep -P $HOME'/[^\s]*$'
Другой способ - использовать API ядра inotify для проверки доступа к файлу. Увы, это асинхронная система, и у вас не будет таких деталей, как «какое приложение», «когда именно», «какой пользователь». У вас будет только обратный вызов «этот файл был изменен / доступен ...». Некоторые приложения (Inotify, FAM, Gamin) предоставляет вам простой доступ к API
источник
inotify
для запускаlsof
. Система просто слишком быстра, чтобы эта идея работала: процесс часто завершается или закрывает файл до запуска lsof. В некоторых случаях это все еще может работать, но, вероятно, очень мало.Вы можете искать
atime
и удалять файлы, которые долгое время не использовались (при условии, что вы не настраивали свою систему так, чтобы она не использовалась atime), но это довольно рискованно (посмотритеtmpreaper
, хотите ли вы пойти по этому пути).Вместо этого я бы предложил Bleachbit , интерактивную программу с графическим интерфейсом для удаления хлама.
источник