Скрипт удаления старых файлов

Недавно делал что-то типа частного файлообменника, и чтобы не контролировать что пользователи закачивают, добавил скрипт в cron чтобы файлы которым больше 3 дней удалялись автоматически.

Пример команды для удаления файлов которым больше N дней:

find /var/www/share/ -type f -mtime +N -delete

Если нужно удалять директории и все что в них есть, тогда этой командой:

find /var/www/share/ -mindepth 1 -maxdepth 1 -type d -mtime +N -exec rm -rfv -- {} +

Можно также писать логи (и не забыть настроить logrotate):

find /var/www/share/ -mindepth 1 -maxdepth 1 -type d -mtime +N -exec rm -rfv -- {} + >> /dir/log.txt

Вместо удаления можно проверить какие данные будут удалены командой:

find /var/www/share/ -mindepth 1 -type d -mtime +N -print

Удаление файлов старше 1 года и удаление пустых директорий:

find /var/www/share/ -type f -mtime +365 -delete
find /var/www/share/ -type d -empty -delete

Пишем команду в файл и ложим в желаемую директорию, например /home/user/share.sh
Добавляем ссылку на этот файл в /etc/crontab. Планировщик будет выполнять его каждый день в 4 утра от имени пользователя «www-data» и тем самым будут удаляться файлы которые хранятся больше N дней:

0 4 * * * www-data /home/ixnfo.com/share.sh > /dev/null 2>&1

Смотрите также мои статьи:
Как изменить дату файла в Linux
Скрипт проверки свободного места на HDD

Оставьте комментарий

Добавить комментарий