Регулярная очистка старых неиспользуемых файлов с вашего сервера является лучшей практикой. Например, если мы ежедневно/ежечасно выполняем резервное копирование файлов или баз данных на сервере, то на сервере будет создаваться много мусора. Поэтому регулярно очищайте его. Для этого вы можете найти старые файлы в каталоге резервного копирования и очистить их.
В этой статье описано, как найти и удалить файлы старше 30 дней. Здесь 30 дней старше означает, что дата последней модификации предшествует 30 дням.
Удаление файлов старше 30 дней
С помощью команды find можно найти и удалить все файлы, которые были изменены более X дней назад. Кроме того, при необходимости вы можете удалить их одной командой.
Прежде всего, перечислите все файлы старше 30 дней в каталоге /opt/backup.
1 | find /opt/backup -type f -mtime +30 |
Проверьте список файлов и убедитесь, что в приведенной выше команде нет ни одного полезного файла. Убедившись в этом, можно удалить эти файлы с помощью следующей команды.
1 | find /opt/backup -type f -mtime +30 -delete |
Удаление файлов с определенным расширением
Вы также можете указать дополнительные фильтры для поиска команд вместо удаления всех файлов. Например, можно удалять только файлы с расширением ".log" и измененные до 30 дней.
Для надежности сначала выполните пробный запуск и выведите список файлов, соответствующих заданным критериям.
1 | find /var/log -name "*.log" -type f -mtime +30 |
Когда список будет проверен, удалите эти файлы, выполнив следующую команду:
1 | find /var/log -name "*.log" -type f -mtime +30 -delete |
Приведенная выше команда удалит только файлы с расширением .log и с датой последней модификации более 30 дней.
Рекурсивное удаление старого каталога
Опция -delete может не сработать, если каталог не пуст. В этом случае для удаления мы будем использовать команду Linux rm с командой find.
Выполните поиск всех каталогов в каталоге /var/log, измененных до 90 дней, с помощью следующей команды.
1 | find /var/log -type d -mtime +90 |
Здесь мы можем выполнить команду rm, используя опцию командной строки -exec. Выходные данные команды find будут отправлены команде rm в качестве входных данных.
1 | find /var/log -type d -mtime +30 -exec rm -rf {} \; |
Перед удалением каталога убедитесь, что не удаляется каталог пользователя. Иногда даты модификации родительского каталога могут быть старше, чем дочерних каталогов. В этом случае рекурсивное удаление может удалить и дочерний каталог.
Заключение
Вы узнали, как найти и удалить файлы в командной строке Linux, которые были изменены более определенного количества дней назад. Это поможет вам очистить систему от нежелательных файлов.