Страница 1 из 1

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

Добавлено: 2009-09-28 15:00:10
trio
Всем привет.
Есть ежедневные бекапы базы 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:

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

Добавлено: 2009-09-28 15:04:04
paradox

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

rm `date сдесьформатдаты`*

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

Добавлено: 2009-09-28 15:53:08
RusBiT
Попробуй при помощи find, что то типа

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

find /var/backup/ -mtime +31 -print -delete

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

Добавлено: 2009-09-29 20:26:58
zg
я бы не поленился и перевёл все бэкапы в формат ГГГГ-ММ-ДД.tar.gz, потом сортировал список по имени и удалял все файлы, которые идут после 31 файла в списке.

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

Добавлено: 2009-09-29 20:30:51
zg
Вообще, вот как выглядит у меня файл для резервного копирования

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

#!/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

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

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

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

Добавлено: 2009-10-07 18:20:11
Laa
RusBiT писал(а):Попробуй при помощи find, что то типа

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

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

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

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

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

Добавлено: 2009-10-07 22:59:34
Alex Keda
действительно - чё с сортировкой не так будет?
========
a про find - согласен - самый простой и правильный

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

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

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

Добавлено: 2009-10-10 15:17:20
Alex Keda
ну, батенько, на этот случай есть системный администратор, работа кторого смотреть чтоб всё работало +)))