Народ!
Нужен скриптик, который бы удалял файлы старше N дней в определённой папке. Раз в сутки или может быть в реальном времени.
Настоятельно просим вас при общении соблюдать Правила форума и законы РФ. Наша тематика вне политики, поэтому воздержитесь от обсуждения ситуации на Украине и связанных с ней событий, независимо от того, какую сторону вы поддерживаете.
Также напоминаем, что наш форум находится в доменной зоне .ru, физически расположен на российских серверах и мы соблюдаем действующее законодательство России. Любые сообщения о политике будут удаляться.
Linux Forum → Работа в командной строке → Нужен скрипт, удаляющий файлы старше N дней
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Народ!
Нужен скриптик, который бы удалял файлы старше N дней в определённой папке. Раз в сутки или может быть в реальном времени.
parovoZZ, навряд ли кто откликнется, придется или платить, или делать самостоятельно.
Разделяй и властвуй!
Найти файлы старше N дней в каталоге поможет find (равно как и удалить найденное).
Передать найденное команде удаления поможет xargs.
Удалить файлы по списку поможет rm.
Запускать всё это раз в сутки поможет crond, редактирование расписаний пользователя -- crontab -e.
соединив всё вместе, получите желаемое.
По каждой команде есть соответствующие руководства, man в помощь.
Как вариант добавить задание в cron
find /path/to/dir -ctime +10 -delete
где /path/to/dir — каталог, который будет проверяться,
+10 — старше 10 дней.
удаляем файлы старше 30 дней
...
#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
Лучше:
DIR_FILES="/home/ivan/backup/"
без звёздочки, ни к чему там лишний глоббинг (если только не стоит задача пропускать скрытые (.*) файлы и каталоги на первом уровне), по каталогам find сам ходить умеет...
Также есть смысл присмотреться к tmpwatch — эта программа может удалять файлы в зависимости от времени их создания, изменения и доступа.
Смотрите ка, сколько народу откликнулось! Прям не ожидал!..
А как бы залогировать в файл?
Как-нибудь так:
find /path/to/dir -ctime +10 -delete > log.txt
...или так:
find /path/to/dir -ctime +10 -delete | tee log.txt
А лежать он будет в /path/to/dir ?
В данном случае лежать будет в каталоге, из которого запущен скрипт. Это был только пример. Можно указать «правильный» полный путь к каталогу с логами. Главное — чтобы у пользователя, от имени которого запускается скрипт, были соответствующие права доступа.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Linux Forum → Работа в командной строке → Нужен скрипт, удаляющий файлы старше N дней
Форум работает на PunBB, при поддержке Informer Technologies, Inc