✏️ Как удалить файлы, которые не были доступны в течение определенного времени на Linux

Мы уже рассмотрели, как вручную находить и удалять файлы старше X дней с помощью команды find в Linux.

Как найти и удалить файлы старше X дней в Linux

Сегодня мы сделаем то же самое, но только если файлы не были доступны в течение определенного периода времени.

Передайте «Tmpwatch», утилите командной строки для рекурсивного удаления файлов, к которым не было доступа в течение определенного времени.

Не только файлы, tmpwatch также удалит пустые каталоги.

По умолчанию Tmpwatch решает, какие файлы/каталоги следует удалить, основываясь на их времени (времени доступа).

Конечно, вы можете изменить это поведение, используя также значения ctime (время изменения inode), mtime (время изменения).

Обычно Tmpwatch можно использовать для удаления содержимого каталога /tmp и других неиспользуемых материалов, таких как старые файлы журнала.

Важное предупреждение !!

Перед началом использования этого инструмента вы должны знать, что Tmpwatch рекурсивно удаляет файлы и каталоги на основе заданных критериев. Не запускайте tmpwatch в/(root каталоге). Этот каталог содержит важные файлы, которые необходимы для работы системы Linux. Если вы не будете осторожны, tmpwatch удалит важные системные файлы и каталоги, которые соответствуют заданным критериям, во всем корневом каталоге. В инструмент Tmpwatch не встроен защитный механизм, который бы препятствовал запуску его в корневом каталоге. Таким образом, нет способа отменить операцию. Вы были предупреждены!

Установка 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/
Здесь -m обозначает время модификации, а d — параметр . Параметропределяет возрастной порог для удаления файлов. Вы можете использовать следующие параметры time_spec для удаления файлов.
  • 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/wtmpremoving directory /var/log/ppp if emptyremoving directory /var/log/tuned if emptyremoving directory /var/log/anaconda if emptyremoving file /var/log/dmesg.oldremoving file /var/log/boot.logremoving 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'.
Это только симулирует операцию, но фактически ничего не удаляет. Tmpwatch просто выполнит пробный прогон и покажет вам, какие файлы будут удалены в выводе.

Принудительное удаление файла

Если вы хотите принудительно удалить файлы, используйте опцию -f и покажите, какие файлы будут удалены в выводе.

tmpwatch -f 10h /var/log/
Обычно файлы, принадлежащие текущему пользователю, без прав на запись, не удаляются.

Опция -f также удалит их.

Опять же, пожалуйста, будьте осторожны при использовании команд Tmpwatch/Tmpreaper.

Перед запуском дважды проверьте путь, чтобы избежать потери данных.

Для более подробной информации обратитесь к справочным страницам.

$ man tmpwatch

или,

$ man tmpreaper

Отправка комментария

0 Комментарии