Как реализовать удаления файлов по дате?

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
trio
рядовой
Сообщения: 19
Зарегистрирован: 2009-07-09 21:10:54

Как реализовать удаления файлов по дате?

Непрочитанное сообщение trio » 2009-09-28 15:00:10

Всем привет.
Есть ежедневные бекапы базы mysql которые ложатся в отдельну папку и имею вид:
01-09-2009.tar.gz
02-09-2009.tar.gz
03-09-2009.tar.gz
...
31-09-2009.tar.gz
01-10-2009.tar.gz

Как реализовать удаление файлов старше 31 дня ?
Тоесть чтобы файликов всегда ровно оставалось в папке не больше 31-го.
Нада взять текущую дату и приравнять ее к дате создания каждого файлика,
если разница больше 31 - такой файлик удалить без потверждения.
в perle и shelle не силен, прошу помощи. :drinks:

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/


Аватара пользователя
RusBiT
лейтенант
Сообщения: 635
Зарегистрирован: 2007-08-03 11:43:53
Откуда: Красноярск
Контактная информация:

Re: Как реализовать удаления файлов по дате?

Непрочитанное сообщение RusBiT » 2009-09-28 15:53:08

Попробуй при помощи find, что то типа

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

find /var/backup/ -mtime +31 -print -delete
Чем больше я познаю FreeBSD, тем больше я считаю себя ламером :)

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Как реализовать удаления файлов по дате?

Непрочитанное сообщение zg » 2009-09-29 20:26:58

я бы не поленился и перевёл все бэкапы в формат ГГГГ-ММ-ДД.tar.gz, потом сортировал список по имени и удалял все файлы, которые идут после 31 файла в списке.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Как реализовать удаления файлов по дате?

Непрочитанное сообщение zg » 2009-09-29 20:30:51

Вообще, вот как выглядит у меня файл для резервного копирования

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

#!/bin/sh

cd `dirname $0`

## Текущая дата
d=`date +%Y-%m-%d`

## Дампим и архивируем
tar -cjf ${d}-docs.tar.bz2 -C../docs/ .
mysqldump -u buhgalter --password='****' -h ***.**.**.18 superfin | bzip2 > ${d}-db.sql.bz2

## Удаялем старые архивы (оставляя 4 последних)
find . -name \*docs.tar.bz2 -depth 1 | sort -r | sed 1,4d | xargs rm
find . -name \*db.sql.bz2 -depth 1   | sort -r | sed 1,4d | xargs rm

trio
рядовой
Сообщения: 19
Зарегистрирован: 2009-07-09 21:10:54

Re: Как реализовать удаления файлов по дате?

Непрочитанное сообщение trio » 2009-09-30 18:26:00

Спасиба за пример :good: :drinks:
Все отличненько работает, перевод архивов в формат ГГГГ-ММ-ДД.tar.gz не потребовался.

Аватара пользователя
Laa
ст. лейтенант
Сообщения: 1032
Зарегистрирован: 2008-02-21 18:25:33
Откуда: Украина, Россия

Re: Как реализовать удаления файлов по дате?

Непрочитанное сообщение Laa » 2009-10-07 18:20:11

RusBiT писал(а):Попробуй при помощи find, что то типа

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

find /var/backup/ -mtime +31 -print -delete
+1 -- это наиболее простой способ.
Сортировку ГГГГ-ММ-ДД.tar.gz вы вспомните с декабря по январь, если конечно будете в это время заглядывать в бэкапы. :-D
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Как реализовать удаления файлов по дате?

Непрочитанное сообщение zg » 2009-10-07 20:22:22

Laa писал(а):Сортировку ГГГГ-ММ-ДД.tar.gz вы вспомните с декабря по январь
поясни?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Как реализовать удаления файлов по дате?

Непрочитанное сообщение Alex Keda » 2009-10-07 22:59:34

действительно - чё с сортировкой не так будет?
========
a про find - согласен - самый простой и правильный
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Как реализовать удаления файлов по дате?

Непрочитанное сообщение zg » 2009-10-08 5:05:29

lissyara писал(а):a про find - согласен - самый простой и правильный
прикол в том, что find основывается на дате и системном времени, а не на количестве файлов. И если слетит время или по какой-то причине перестанут создаваться архивы, то либо сразу, либо через некоторое время все имеющиеся файлы архивов будут удалены.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Как реализовать удаления файлов по дате?

Непрочитанное сообщение Alex Keda » 2009-10-10 15:17:20

ну, батенько, на этот случай есть системный администратор, работа кторого смотреть чтоб всё работало +)))
Убей их всех! Бог потом рассортирует...