Мы уже рассмотрели, как вручную находить и удалять файлы старше X дней с помощью команды find в Linux.
Как найти и удалить файлы старше X дней в Linux
Сегодня мы сделаем то же самое, но только если файлы не были доступны в течение определенного периода времени.
Передайте «Tmpwatch», утилите командной строки для рекурсивного удаления файлов, к которым не было доступа в течение определенного времени.
Не только файлы, tmpwatch также удалит пустые каталоги.
По умолчанию Tmpwatch решает, какие файлы / каталоги следует удалить, основываясь на их времени (времени доступа).
Конечно, вы можете изменить это поведение, используя также значения ctime (время изменения inode), mtime (время изменения).
Обычно Tmpwatch можно использовать для удаления содержимого каталога /tmp и других неиспользуемых материалов, таких как старые файлы журнала.
Важное предупреждение !!
Перед началом использования этого инструмента вы должны знать, что Tmpwatch рекурсивно удаляет файлы и каталоги на основе заданных критериев. Не запускайте tmpwatch в / (root каталоге). Этот каталог содержит важные файлы, которые необходимы для работы системы Linux. Если вы не будете осторожны, tmpwatch удалит важные системные файлы и каталоги, которые соответствуют заданным критериям, во всем корневом каталоге. В инструмент Tmpwatch не встроен защитный механизм, который бы препятствовал запуску его в корневом каталоге. Таким образом, нет способа отменить операцию. Вы были предупреждены!
- Установка Tmpwatch
- Удалите файлы, которые не были доступны в течение определенного времени, используя Tmpwatch / Tmpreaper
- Удалить файлы, которые не были изменены более X дней
- Удалить символические ссылки
- Удалить все файлы
- Исключить каталоги из удаления
- Выполните тестовый прогон, фактически не удаляя ничего
- Принудительное удаление файла
Установка Tmpwatch
Tmpwatch доступен в репозиториях по умолчанию большинства дистрибутивов Linux.
На Fedora вы можете установить его с помощью команды:
$ sudo dnf install tmpwatch
На CentOS:
$ sudo yum install tmpwatch
На openSUSE:
$ sudo zypper install tmpwatch
В Debian и его производных, таких как Ubuntu, Tmpwatch доступен под другим именем, т.е. Tmpreaper.
Tmpreaper в основном основан на `tmpwatch-1.2 / 1.4 ‘Эрика Троана из Redhat. Теперь tmpreaper поддерживается Debian Полом Слотманом.
$ sudo apt install tmpreaper
Удалите файлы, которые не были доступны в течение определенного времени, используя Tmpwatch / Tmpreaper
Использование Tmpwatch и Tmpreaper практически одинаково.
Если вы работаете в системах на основе Debian, замените «Tmpwatch» на «Tmpreaper» в следующих примерах.
Удалить файлы, к которым нет доступа более X дней
Чтобы удалить файлы старше 10 дней, запустите:
tmpwatch 10d /var/log/
Приведенная выше команда удалит все файлы и пустые каталоги, к которым не было доступа более 10 дней, из /var/log/.
Удалить файлы, которые не были изменены более X дней
Как я уже сказал, Tmpwatch будет удалять файлы в зависимости от времени доступа к ним.
Вы также можете удалять файлы в зависимости от времени их изменения (mtime).
Например, следующая команда удалит файлы, которые не были изменены в течение 10 дней по указанному пути.
tmpwatch -m 10d /var/log/
- d – на дни,
- h – часами,
- m – на минуты,
- s – на секунды.
Например, чтобы удалить файлы, которые не были изменены в течение последних 10 часов, просто запустите:
tmpwatch -m 10 /var/log/
Удалить символические ссылки
Если вы хотите удалить символические ссылки, а не только обычные файлы и каталоги, используйте опцию -s.
tmpwatch -s 10 /var/log/
Удалить все файлы
tmpwatch -a 10 /var/log/
Приведенная выше команда удалит все типы файлов, включая обычные файлы, символические ссылки и каталоги в папке /var/log/.
Исключить каталоги из удаления
Иногда вы можете захотеть удалить файлы, но не каталоги. если это так, команда будет:
tmpwatch -am 10 --nodirs /var/log/
Приведенная выше команда удалит все файлы, кроме каталогов, которые не были изменены в течение последних 10 часов.
Выполните тестовый прогон, фактически не удаляя ничего
Иногда вы можете захотеть посмотреть, какие файлы на самом деле будут удалены.
Это будет полезно при запуске Tmpwatch в важном каталоге.
Если это так, запустите Tmpwatch в тестовом режиме с параметром -t.
tmpwatch -t 30 /var/log/
Пример вывода с сервера CentOS 7:
removing file /var/log/wtmp removing directory /var/log/ppp if empty removing directory /var/log/tuned if empty removing directory /var/log/anaconda if empty removing file /var/log/dmesg.old removing file /var/log/boot.log removing file /var/log/dnf.librepo.log
В системах на основе Debian вы увидите вывод, подобный приведенному ниже.
$ tmpreaper -t 30 /var/log/ (PID 1803) Pretending to clean up directory `/var/log/'. (PID 1804) Pretending to clean up directory `apache2'. Pretending to remove file `apache2/error.log'. Pretending to remove file `apache2/access.log'. Pretending to remove file `apache2/other_vhosts_access.log'. (PID 1804) Back from recursing down `apache2'. (PID 1804) Pretending to clean up directory `dbconfig-common'. Pretending to remove file `dbconfig-common/dbc.log'. (PID 1804) Back from recursing down `dbconfig-common'. (PID 1804) Pretending to clean up directory `dist-upgrade'. (PID 1804) Back from recursing down `dist-upgrade'. (PID 1804) Pretending to clean up directory `lxd'. (PID 1804) Back from recursing down `lxd'. Pretending to remove file `/var/log//cloud-init.log'. (PID 1804) Pretending to clean up directory `landscape'. Pretending to remove file `landscape/sysinfo.log'. (PID 1804) Back from recursing down `landscape'.
Принудительное удаление файла
Если вы хотите принудительно удалить файлы, используйте опцию -f и покажите, какие файлы будут удалены в выводе.
tmpwatch -f 10h /var/log/
Опция -f также удалит их.
Опять же, пожалуйста, будьте осторожны при использовании команд Tmpwatch / Tmpreaper.
Перед запуском дважды проверьте путь, чтобы избежать потери данных.
Для более подробной информации обратитесь к справочным страницам.
$ man tmpwatch
или,
$ man tmpreaper