Недавно делал что-то типа частного файлообменника, и чтобы не контролировать что пользователи закачивают, добавил скрипт в 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