Проблема с командой FIND - удалять файлы, старше x-дней.

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Ridik5533
рядовой
Сообщения: 39
Зарегистрирован: 2011-12-20 18:16:11
Откуда: Киев

Проблема с командой FIND - удалять файлы, старше x-дней.

Непрочитанное сообщение Ridik5533 » 2013-06-18 12:14:21

Подскажите что я делаю не так или как исправить!
Ситуация: Делаю бэкап файлов, надо что бы после 7 дней, старый бэкап удалялся, все это делается по крону с помощью скриптика...
Пример:

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

find /путь/backup -maxdepth 1 \( -name 'www_*.tgz' \) -ctime +7 -exec rm {} \;
Проблема:
В папке backup не 7 файлов *.tgz как должно быть, а 9! Получается он удаляет каждый 10 фаил. Хотя должен каждый 8!

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

# ls /usr/local/apache/backup
-rw-r--r--  1 root  97M Июн  9 23:00 www_13-06-09.tgz
-rw-r--r--  1 root  97M Июн 10 23:00 www_13-06-10.tgz
-rw-r--r--  1 root  97M Июн 11 23:00 www_13-06-11.tgz
-rw-r--r--  1 root  97M Июн 12 23:00 www_13-06-12.tgz
-rw-r--r--  1 root  97M Июн 13 23:00 www_13-06-13.tgz
-rw-r--r--  1 root  97M Июн 14 23:00 www_13-06-14.tgz
-rw-r--r--  1 root  97M Июн 15 23:00 www_13-06-15.tgz
-rw-r--r--  1 root  97M Июн 16 23:00 www_13-06-16.tgz
-rw-r--r--  1 root  97M Июн 17 23:00 www_13-06-17.tgz
делаю проверку командой find для -ctime +7, после -ctime 7 и -ctime -7

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

#find /usr/local/apache/backup -maxdepth 1 \( -name 'www_*.tgz' \) -ctime +7
/usr/local/apache/backup/www_13-06-09.tgz

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

find /usr/local/apache/backup -maxdepth 1 \( -name 'www_*.tgz' \) -ctime 7
/usr/local/apache/backup/www_13-06-10.tgz

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

find /usr/local/apache/backup -maxdepth 1 \( -name 'www_*.tgz' \) -ctime -7
/usr/local/apache/backup/www_13-06-11.tgz
/usr/local/apache/backup/www_13-06-13.tgz
/usr/local/apache/backup/www_13-06-17.tgz
/usr/local/apache/backup/www_13-06-14.tgz
/usr/local/apache/backup/www_13-06-16.tgz
/usr/local/apache/backup/www_13-06-15.tgz
/usr/local/apache/backup/www_13-06-12.tgz
В чем может быть проблема?
месяц назад все работало на УРА!
Последний раз редактировалось f_andrey 2013-06-18 14:57:43, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.

Хостинговая компания 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/

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Re: Проблема с командой FIND - удалять файлы, старше x-дней.

Непрочитанное сообщение FiL » 2013-06-19 7:16:43

<телепат моде он>
проверка выполняется до собственно бакапа
<телепат моде оф>

таки +7 - это больше 8 дней (вернее больше, чем 8*24 часов). Так как бакап выполняется после проверки (а значит дата изменения файла больше, чем время проверки), то оно оставляет 8 файлов. А потом еще и создает 9-й бакап. Что там было месяц назад моя телепатия не знает.

snorlov
подполковник
Сообщения: 3929
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Проблема с командой FIND - удалять файлы, старше x-дней.

Непрочитанное сообщение snorlov » 2013-06-19 9:21:36

Я с такой бедой тоже столкнулся, поэтому приходится удаление запускать перед бекапом и после него.. :Yahoo!:

Аватара пользователя
Ridik5533
рядовой
Сообщения: 39
Зарегистрирован: 2011-12-20 18:16:11
Откуда: Киев

Re: Проблема с командой FIND - удалять файлы, старше x-дней.

Непрочитанное сообщение Ridik5533 » 2013-06-19 10:53:02

FiL писал(а):<телепат моде он>
проверка выполняется до собственно бакапа
<телепат моде оф>

таки +7 - это больше 8 дней (вернее больше, чем 8*24 часов). Так как бакап выполняется после проверки (а значит дата изменения файла больше, чем время проверки), то оно оставляет 8 файлов. А потом еще и создает 9-й бакап. Что там было месяц назад моя телепатия не знает.
FiL проверка выполняется после самого бэкапа, вот мой скрипт backup.sh

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

#!/bin/sh
PREFIX="/usr/local/apache/backup"
SRC_DIR="/usr/local/apache"
CURDAY=`date "+%y-%m-%d"`
DATAFILE="www_$CURDAY.tgz"
SQLFILE="sql_$CURDAY.sql.gz"

cd "$SRC_DIR"
/usr/local/mysql4/bin/mysqldump usbretail | gzip -9 > "$PREFIX/$SQLFILE"
rm -rf /usr/local/apache/htdocs/modules/smarty/cache/*
rm -rf /usr/local/apache/htdocs/modules/smarty/templates_c/*
tar -czf "$PREFIX/$DATAFILE" htdocs

find $PREFIX -maxdepth 1 \( -name 'www_*.tgz' \) -ctime +7 -exec rm {} \;
find $PREFIX -maxdepth 1 \( -name 'sql_*.sql.gz' \) -ctime +7 -exec rm {} \;
если мне надо ровно 7 бэкапов, я должен выставить значение -ctime +5?

Charlz_Klug_
проходил мимо

Re: Проблема с командой FIND - удалять файлы, старше x-дней.

Непрочитанное сообщение Charlz_Klug_ » 2013-06-19 12:17:08

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

[Charlz_Klug@Meleena]/home/nod32update/ftp/backups>$ cat /usr/local/etc/clear_backup/clear_backup.sh
#!/bin/sh
#rm `find /home/nod32update/ftp/backups/ -mtime +180d|grep -v -E '/$'`
rm `find /home/nod32update/ftp/backups/daily/ -mtime +8d|grep -v -E '/$'`

[Charlz_Klug@Meleena]/home/nod32update/ftp/backups>$ find daily/|grep 1c
daily/1c8
daily/1c8/1c815.06.2013.rar
daily/1c8/1c817.06.2013.rar
daily/1c8/1c810.06.2013.rar
daily/1c8/1c812.06.2013.rar
daily/1c8/1c813.06.2013.rar
daily/1c8/1c814.06.2013.rar
daily/1c8/1c811.06.2013.rar
daily/1c8/1c818.06.2013.rar
[Charlz_Klug@Meleena]/home/nod32update/ftp/backups>$
Подойдёт?