Назад | Перейти на главную страницу

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

Сценарий оболочки не должен удалять файлы в * корневом каталоге *. Мой * путь будет таким: / export / home / ftp / ...

Я провел небольшое исследование и выяснил, как найти и удалить файлы старше 30 дней по определенному пути с помощью команд find и exec.

* найти / экспорт / home / ftp / -type f -mtime +30 -exec rm -f {} \;

Но согласно требованию я хочу удалить console.log и server.log только из этого каталога и исключить остальные файлы.

Пожалуйста, помогите мне в этом вопросе.

Если вам просто нужно каждый месяц удалять старые server.log и console.log, вы также можете использовать logrotate который, скорее всего, уже работает под RHEL. Такой фрагмент конфигурации будет работать в /etc/logrotate.d/*.conf или где бы в вашей системе ни находились файлы конфигурации.

# rotate server.log and console.log every month
# delete, not compress, old file

/export/home/ftp/server.log /export/home/ftp/console.log {
    monthly
    rotate 0
}

Пользовательский ежемесячный cron, как предлагалось выше, также подойдет. Фактически, поскольку logrotate запускается из cron, вы можете считать это своего рода расширением cron. HTH.

Предполагая, что вам действительно нужно использовать find для рекурсии через подкаталоги:

find /export/home/ftp \( -name console.log -or -name server.log \) -mtime +30 -exec rm -f {} +

Почему бы просто не использовать ежемесячный cron?

@monthly / usr / bin / rm -f console.log @monthly / usr / bin / rm -f server.log

Это определенно будет безопаснее, чем работать с find.

Проверьте этот удобный инструмент от debian жнец

Альтернативой было бы использование xargs, что, по-видимому, более эффективно - http://www.sunmanagers.org/pipermail/summaries/2005-March/006255.html

Итак, вы можете сделать что-то вроде этого:

find /export/home/ftp -maxdepth 1 \( -name console.log -or -name server.log \) -mtime +30 | xargs -O -r rm