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

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

parovoZZ
Сообщения: 553
Статус: Хочу подружиться с пингвином
ОС: Ubuntu 9.04 + GNOME

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

Сообщение parovoZZ »

Народ!

Нужен скриптик, который бы удалял файлы старше N дней в определённой папке. Раз в сутки или может быть в реальном времени.
Хочу оттопырить все дистрибутивы((
HomeServer: FreeBSD 8.0
Notebook: Ubuntu 9.04
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4814
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение SLEDopit »

Скриптик? Там же одна команда (:

Код: Выделить всё

find /path -type f -ctime +N -delete
где N - количество дней.

при необходимости запихнуть в крон.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
parovoZZ
Сообщения: 553
Статус: Хочу подружиться с пингвином
ОС: Ubuntu 9.04 + GNOME

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение parovoZZ »

SLEDopit писал(а):
22.05.2013 10:51
Скриптик? Там же одна команда (:

Код: Выделить всё

find /path -type f -ctime +N -delete
где N - количество дней.

при необходимости запихнуть в крон.


Здорово! А как эту команду запихнуть в крон? Создать файл *.sh, его прописать в crontab? Что-то типа * 0 * * * /root/scripts/*.sh ?
Хочу оттопырить все дистрибутивы((
HomeServer: FreeBSD 8.0
Notebook: Ubuntu 9.04
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4814
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение SLEDopit »

parovoZZ писал(а):
22.05.2013 12:18
А как эту команду запихнуть в крон?
ну зачем плодить лишние сущности в виде скриптов для таких простых случаев?

Код: Выделить всё

* 15   *       *       *      find /path -type f -ctime +N -delete

вот если бы там было что-то посложнее, с проверками и отсылкой результатов на почту, то нужен был бы скрипт. а так всё хорошо.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
parovoZZ
Сообщения: 553
Статус: Хочу подружиться с пингвином
ОС: Ubuntu 9.04 + GNOME

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение parovoZZ »

SLEDopit писал(а):
22.05.2013 12:27
parovoZZ писал(а):
22.05.2013 12:18
А как эту команду запихнуть в крон?
ну зачем плодить лишние сущности в виде скриптов для таких простых случаев?

Код: Выделить всё

* 15   *       *       *      find /path -type f -ctime +N -delete

вот если бы там было что-то посложнее, с проверками и отсылкой результатов на почту, то нужен был бы скрипт. а так всё хорошо.


А если в лог вывести?
Хочу оттопырить все дистрибутивы((
HomeServer: FreeBSD 8.0
Notebook: Ubuntu 9.04
Спасибо сказали:
parovoZZ
Сообщения: 553
Статус: Хочу подружиться с пингвином
ОС: Ubuntu 9.04 + GNOME

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение parovoZZ »

Запись * 13 * * * в crontab - это каждый день в 13-00 или каждые 13 часов? А то в таком виде в 13-00 не сработало чего-то.
Хочу оттопырить все дистрибутивы((
HomeServer: FreeBSD 8.0
Notebook: Ubuntu 9.04
Спасибо сказали:
Kopilov
Сообщения: 882
ОС: [K]Ubuntu, Debian

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение Kopilov »

Каждый день в 13-00.
Только между кодом времени и командой надо, наверно, вставить логин пользователя, от которого команда будет запущена. (Не знаю, как во FreeBSD, а в GNU/Linux так.)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19498
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение Bizdelnick »

parovoZZ писал(а):
22.05.2013 13:16
Запись * 13 * * * в crontab - это каждый день в 13-00 или каждые 13 часов?

Это каждую минуту с 13:00 до 13:59. Подозреваю, SLEDopit просто опечатался и вместо первой * хотел написать 0.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
parovoZZ
Сообщения: 553
Статус: Хочу подружиться с пингвином
ОС: Ubuntu 9.04 + GNOME

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение parovoZZ »

Bizdelnick писал(а):
22.05.2013 13:55
parovoZZ писал(а):
22.05.2013 13:16
Запись * 13 * * * в crontab - это каждый день в 13-00 или каждые 13 часов?

Это каждую минуту с 13:00 до 13:59. Подозреваю, SLEDopit просто опечатался и вместо первой * хотел написать 0.


Всем спасибо! Всё заработало!!
Хочу оттопырить все дистрибутивы((
HomeServer: FreeBSD 8.0
Notebook: Ubuntu 9.04
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4814
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение SLEDopit »

Bizdelnick писал(а):
22.05.2013 13:55
Подозреваю, SLEDopit просто опечатался и вместо первой * хотел написать 0.
Да, именно так.
parovoZZ писал(а):
22.05.2013 13:16
каждые 13 часов?
каждые 13 часов будет : 0 */13 * * *
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
parovoZZ
Сообщения: 553
Статус: Хочу подружиться с пингвином
ОС: Ubuntu 9.04 + GNOME

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение parovoZZ »

А как бы залогировать в файл?
Хочу оттопырить все дистрибутивы((
HomeServer: FreeBSD 8.0
Notebook: Ubuntu 9.04
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4814
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение SLEDopit »

Код: Выделить всё

find /path -type f -ctime +N -ls -delete | tee -a /path/to/log
в /path/to/log будет выведен список удалённых файлов.
чтобы и stderr в лог перенаправить, перед пайпом добавьте 2>&1.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
parovoZZ
Сообщения: 553
Статус: Хочу подружиться с пингвином
ОС: Ubuntu 9.04 + GNOME

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение parovoZZ »

спс
Хочу оттопырить все дистрибутивы((
HomeServer: FreeBSD 8.0
Notebook: Ubuntu 9.04
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение allez »

Kopilov писал(а):
22.05.2013 13:27
Только между кодом времени и командой надо, наверно, вставить логин пользователя, от которого команда будет запущена. (Не знаю, как во FreeBSD, а в GNU/Linux так.)

Это нужно делать только в том случае, если правке подвергается общесистемный файл /etc/crontab, задания из которого могут быть запущены от имени разных пользователей. При правке же пользовательских файлов командой crontab -e указывать имя пользователя не нужно, что вполне очевидно. И данное утверждение справедливо как для BSD, так и для линуксов.
Спасибо сказали:
Аватара пользователя
oper777
Сообщения: 411
ОС: gentoo

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение oper777 »

SLEDopit писал(а):
22.05.2013 14:16
Bizdelnick писал(а):
22.05.2013 13:55
Подозреваю, SLEDopit просто опечатался и вместо первой * хотел написать 0.
Да, именно так.
parovoZZ писал(а):
22.05.2013 13:16
каждые 13 часов?
каждые 13 часов будет : 0 */13 * * *


Кстати (совсем не кстати). Запись */13 означает не "каждые 13 часов", а "в каждый час, кратный 13". В данном случае будет выполняться только один раз в сутки - в 13:00.

Спасибо сказали:
parovoZZ
Сообщения: 553
Статус: Хочу подружиться с пингвином
ОС: Ubuntu 9.04 + GNOME

Re: Нужен скриптик, который бы удалял файлы старше N дней

Сообщение parovoZZ »

SLEDopit писал(а):
27.05.2013 09:57

Код: Выделить всё

find /path -type f -ctime +N -ls -delete | tee -a /path/to/log
в /path/to/log будет выведен список удалённых файлов.
чтобы и stderr в лог перенаправить, перед пайпом добавьте 2>&1.


Вот так вот?

find /path -type f -ctime +N -ls -delete 2>&1 | tee -a /path/to/log
Хочу оттопырить все дистрибутивы((
HomeServer: FreeBSD 8.0
Notebook: Ubuntu 9.04
Спасибо сказали: