LinuxForum.Fans
Тема

Нужен скрипт, удаляющий файлы старше N дней

Автор: parovoZZ 13 сообщений 9901 просмотров
#321370

Народ!

Нужен скриптик, который бы удалял файлы старше N дней в определённой папке. Раз в сутки или может быть в реальном времени.

#321371

parovoZZ, навряд ли кто откликнется, придется или платить, или делать самостоятельно.

#321373

Разделяй и властвуй!

Найти файлы старше N дней в каталоге поможет find (равно как и удалить найденное).
Передать найденное команде удаления поможет xargs.
Удалить файлы по списку поможет rm.
Запускать всё это раз в сутки поможет crond, редактирование расписаний пользователя -- crontab -e.

соединив всё вместе, получите желаемое.

По каждой команде есть соответствующие руководства, man в помощь.

#321374

Как вариант добавить задание в cron

text
find /path/to/dir -ctime  +10 -delete

где /path/to/dir — каталог, который будет проверяться,
+10 — старше 10 дней.

#321380

удаляем файлы старше 30 дней

text

...
#remove old archives 

FIND="/usr/bin/find" DIR_FILES="/home/ivan/backup/*" PARAM="-type f -ctime +30" DEL="| xargs rm -rfv {} \;" ... eval $FIND $DIR_FILES $PARAM $DEL

#321382

Лучше:
DIR_FILES="/home/ivan/backup/"
без звёздочки, ни к чему там лишний глоббинг (если только не стоит задача пропускать скрытые (.*) файлы и каталоги на первом уровне), по каталогам find сам ходить умеет...

#321384

Также есть смысл присмотреться к tmpwatch — эта программа может удалять файлы в зависимости от времени их создания, изменения и доступа.

#321430

Смотрите ка, сколько народу откликнулось! :) Прям не ожидал!..

#321950

Спасибо! А как бы залогировать в файл?

#321958
"parovoZZ⇓" написал:
А как бы залогировать в файл?

Как-нибудь так:

text
find /path/to/dir -ctime  +10 -delete > log.txt

...или так:

text
find /path/to/dir -ctime  +10 -delete | tee log.txt
#321986

А лежать он будет в /path/to/dir ?

#321995
"parovoZZ⇓" написал:
А лежать он будет в /path/to/dir ?

В данном случае лежать будет в каталоге, из которого запущен скрипт. Это был только пример. Можно указать «правильный» полный путь к каталогу с логами. Главное — чтобы у пользователя, от имени которого запускается скрипт, были соответствующие права доступа.

Войдите или зарегистрируйтесь, чтобы ответить.