The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Тонкости Bash"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Тонкости Bash"  +/
Сообщение от merfi email(ok) on 18-Янв-11, 15:53 
каждый день создается архив базы mysql
при этом старый архив удаляется
таким образом за месяц получаем месячный архив базы
Ну вот месяц закончился
сегодня например 1 февраля
скрипт проверяет что сегодня 1-й день февраля и должен не создать новый архив а переименовать файл архива от 31 декабря
вот тут и песня
md=`date +%b-%Y`
mv `find /backup/mysql -name 'tem_*' -type f -cmin + 1000` /backup/mysql/tem-$md

mv ругается говорит что не указан целевой файл
Подскажите как правильно слепить имя файла
надо из tem_31-Янв-2011.tar.bz2 получить tem_Янв-2011.tar.bz2

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Тонкости Bash"  +/
Сообщение от XAnder (ok) on 18-Янв-11, 16:59 
> md=`date +%b-%Y`
> mv `find /backup/mysql -name 'tem_*' -type f -cmin + 1000` /backup/mysql/tem-$md

find точно находит то, что нужно? Условие для него составлено очень уж сомнительно.

"-cmin + 1000" - конструкция явно синтаксически неверная (в линуксе, по крайней мере, у вас-то какая ОСь?). Если имелось в виду "-cmin +1000", то тоже ничего хорошего: "файлы, чей статус изменился больше 1000 минут назад" - под это условие может попасть куча файлов.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Тонкости Bash"  +/
Сообщение от merfi email(ok) on 19-Янв-11, 09:26 
>> md=`date +%b-%Y`
>> mv `find /backup/mysql -name 'tem_*' -type f -cmin + 1000` /backup/mysql/tem-$md
> find точно находит то, что нужно? Условие для него составлено очень уж
> сомнительно.
> "-cmin + 1000" - конструкция явно синтаксически неверная (в линуксе, по крайней
> мере, у вас-то какая ОСь?). Если имелось в виду "-cmin +1000",
> то тоже ничего хорошего: "файлы, чей статус изменился больше 1000 минут
> назад" - под это условие может попасть куча файлов

Условие работает просто изумительно
проверил
НУ и сам  продвинулся в процедуре формирования названия файла
md=`date -r ` | awk '{print substr($0, 4, 4)}'
Вот таким макаром можно выловить название месяца в переменную
а потом просто
mv `find /backup/mysql -name 'tem_*' -type f -cmin + 1000` /backup/mysql/tem-${md}
Вот как то так
Всем спасибо за внимание

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

2. "Тонкости Bash"  +/
Сообщение от pavlinux (ok) on 19-Янв-11, 01:39 
> надо из tem_31-Янв-2011.tar.bz2 получить tem_Янв-2011.tar.bz2

по крону

# эвридэйчик в 04:00
00 4 * * * root mysqldump -uroot -pgod --all-databases | bzip2 -z9 > /backup/mysql/tem_`date +%d-%b-%Y`.bz2

# каждого 1-ого числа в 03:00 (GMT = 00:00 если чё)
00 3 1 * * root mysqldump -uroot -pgod --all-databases | bzip2 -z9 > /backup/mysql/tem_`date +%b-%Y`.bz2


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Тонкости Bash"  +/
Сообщение от merfi email(ok) on 19-Янв-11, 09:27 
>> надо из tem_31-Янв-2011.tar.bz2 получить tem_Янв-2011.tar.bz2
> по крону
> # эвридэйчик в 04:00
> 00 4 * * * root mysqldump -uroot -pgod --all-databases | bzip2
> -z9 > /backup/mysql/tem_`date +%d-%b-%Y`.bz2
> # каждого 1-ого числа в 03:00 (GMT = 00:00 если чё)
> 00 3 1 * * root mysqldump -uroot -pgod --all-databases | bzip2
> -z9 > /backup/mysql/tem_`date +%b-%Y`.bz2

Спасибо Действительно красиво и не заморочено
Тока 1 числа каждого месяца надо сделать backup
потом его переименовать
а в самой базе отчистить таблицы

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Тонкости Bash"  +/
Сообщение от pavlinux (ok) on 19-Янв-11, 14:05 
> ...., а в самой базе отчистить таблицы

Это уже третья переменная, про неё Вы в начале не писали. :)

Тогда можно ежедневные делать со 2-ого числа

00 4 2-31 * * root mysqldump ....

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Тонкости Bash"  +/
Сообщение от merfi (ok) on 20-Янв-11, 09:26 
>> ...., а в самой базе отчистить таблицы
> Это уже третья переменная, про неё Вы в начале не писали. :)
> Тогда можно ежедневные делать со 2-ого числа
> 00 4 2-31 * * root mysqldump ....

Господа ! Все налабал и протестил Вот такое й скомный результат Может кому и понадобиться

#Create mysql backup
#!/bin/bash
#function create_file_name build name file with month archive
function create_month_archive(){
   F_D=""
   F_T=""
   FILE_DATE=""
   F_T=$(echo `find /backup/mysql -name 'pet_*' -type f -cmin +1000 -exec ls {} \;`)
   F_D=$(echo `date -r $F_T` | awk '{print substr( $0, 5, 3) substr( $0, 25, 4)}')
   echo $F_D
   FILE_NAME=pet-$F_D.tar.bz2
   /etc/init.d/mysqld stop;
   sleep 30;
   FILE_DATE=$(echo `date +%d-%Y`)
   tar -cjf /backup/mysql/pet_${FILE_DATE}.tar.bz2 /var/lib/mysql/test/*;
   find /backup/mysql -name 'pet_*' -type f -cmin +1000 -exec ls -la {} \;
   echo "DELETE OLD"
   find /backup/mysql -name 'pet_*' -type f -cmin +1000 -exec rm -rf {} \;
   echo "RENAME"
   mv /backup/mysql/pet_${FILE_DATE}.tar.bz2 /backup/mysql/$FILE_NAME;
   /etc/init.d/mysqld start;
   sleep 30;
   mysql test < /usr/local/sbin/mysql_backup.sql;
   echo "Month archive cteate success. Base traffics was refresh!" > /usr/local/sbin/mysql_backup.txt;  
  
}

function create_incremental_archive(){
   /etc/init.d/mysqld stop;
   sleep 30;
   FILE_DATE=$(echo `date +%d-%Y`)
   tar -cjf /backup/mysql/pet_${FILE_DATE}.tar.bz2 /var/lib/mysql/test/*;
   find /backup/mysql -name 'pet_*' -type f -cmin +1000 -exec ls -la {} \;
   echo "DELETE OLD"
   find /backup/mysql -name 'pet_*' -type f -cmin +1000 -exec rm -rf {} \;
   /etc/init.d/mysqld start;
   sleep 30;
   echo "Yesterday rchive cteate success." > /usr/local/sbin/mysql_backup.txt;  
   FILE_DATE="";
}

CUR_DAY=$(echo `date +%d`)
if [ $CUR_DAY -eq "01" ]
    then {
                create_month_archive;
             }
         else
                {
                   create_incremental_archive;
                }

fi

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру