Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.



Скрипт бэкапа все баз mysql и закачки их на FTP

Рубрика: Backup
Метки: | | |
Четверг, 12 февраля 2009 г.
Просмотров: 20591
Подписаться на комментарии по RSS

В данной заметке я публикую довольно простой, но тем не менее весьма полезный скрипт, который делает бэкап всех баз mysql, архивирует их и закачивает на указанный FTP.

Скрипт

<span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># System + MySQL backup script</span>
<span style="color: #666666; font-style: italic;"># </span><span style="color: #666666; font-style: italic;"># ---------------------------------------------------------------------</span>
 
<span style="color: #666666; font-style: italic;">#########################</span>
<span style="color: #666666; font-style: italic;">######TO BE MODIFIED#####</span>
 
<span style="color: #666666; font-style: italic;">### System Setup ###</span>
<span style="color: #007800;">BACKUP</span>=<span style="color: #000000; font-weight: bold;">/</span>root
 
<span style="color: #666666; font-style: italic;">### Настройка Mysql ###</span>
<span style="color: #007800;">MUSER</span>=<span style="color: #ff0000;">"DBUSER"</span>
<span style="color: #007800;">MPASS</span>=<span style="color: #ff0000;">"DBPASSWORD"</span>
<span style="color: #007800;">MHOST</span>=<span style="color: #ff0000;">"localhost"</span>
 
<span style="color: #666666; font-style: italic;">### Настройки FTP ###</span>
<span style="color: #007800;">FTPD</span>=<span style="color: #ff0000;">"/"</span>
<span style="color: #007800;">FTPU</span>=<span style="color: #ff0000;">"FTPUSER"</span>
<span style="color: #007800;">FTPP</span>=<span style="color: #ff0000;">"FTPPASSWORD"</span>
<span style="color: #007800;">FTPS</span>=<span style="color: #ff0000;">"FTPADDRESS"</span>
 
<span style="color: #666666; font-style: italic;">#########################################</span>
 
<span style="color: #666666; font-style: italic;">### Binaries ###</span>
<span style="color: #007800;">TAR</span>=<span style="color: #ff0000;">"$(which tar)"</span>
<span style="color: #007800;">GZIP</span>=<span style="color: #ff0000;">"$(which gzip)"</span>
<span style="color: #007800;">FTP</span>=<span style="color: #ff0000;">"$(which ftp)"</span>
<span style="color: #007800;">MYSQL</span>=<span style="color: #ff0000;">"$(which mysql)"</span>
<span style="color: #007800;">MYSQLDUMP</span>=<span style="color: #ff0000;">"$(which mysqldump)"</span>
 
<span style="color: #666666; font-style: italic;">### Today + hour in 24h format ###</span>
<span style="color: #007800;">NOW</span>=$<span style="color: #7a0874; font-weight: bold;">(</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #ff0000;">"%a%H"</span><span style="color: #7a0874; font-weight: bold;">)</span>
 
<span style="color: #666666; font-style: italic;">### Create hourly dir ###</span>
 
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #007800;">$BACKUP</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$NOW</span>
 
<span style="color: #666666; font-style: italic;">### Получаем имена всех баз Mysql ###</span>
<span style="color: #007800;">DBS</span>=<span style="color: #ff0000;">"$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"</span>
<span style="color: #000000; font-weight: bold;">for</span> db <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #007800;">$DBS</span>
<span style="color: #000000; font-weight: bold;">do</span>
 
<span style="color: #666666; font-style: italic;">### Создаем директории для каждой базы. Резервное копирование будет происходить в различные каталоги ###</span>
  <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #007800;">$BACKUP</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$NOW</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$db</span>
  <span style="color: #007800;">FILE</span>=<span style="color: #007800;">$BACKUP</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$NOW</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$db</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$db</span>.sql.gz
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$i</span>; <span style="color: #007800;">$MYSQLDUMP</span> <span style="color: #660033;">--add-drop-table</span> <span style="color: #660033;">--allow-keywords</span> <span style="color: #660033;">-q</span> <span style="color: #660033;">-c</span> <span style="color: #660033;">-u</span> <span style="color: #007800;">$MUSER</span> <span style="color: #660033;">-h</span> <span style="color: #007800;">$MHOST</span> -p<span style="color: #007800;">$MPASS</span> <span style="color: #007800;">$db</span> <span style="color: #007800;">$i</span> | <span style="color: #007800;">$GZIP</span> <span style="color: #660033;">-9</span> <span style="color: #000000; font-weight: bold;">></span> <span style="color: #007800;">$FILE</span>
<span style="color: #000000; font-weight: bold;">done</span>
 
<span style="color: #666666; font-style: italic;">### Создаем один большой файл для его последующей закачки ###</span>
 
<span style="color: #007800;">ARCHIVE</span>=<span style="color: #007800;">$BACKUP</span><span style="color: #000000; font-weight: bold;">/</span>server1-<span style="color: #007800;">$NOW</span>.tar.gz
<span style="color: #007800;">ARCHIVED</span>=<span style="color: #007800;">$BACKUP</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$NOW</span>
 
<span style="color: #007800;">$TAR</span> <span style="color: #660033;">-zcvf</span> <span style="color: #007800;">$ARCHIVE</span> <span style="color: #007800;">$ARCHIVED</span>
 
<span style="color: #666666; font-style: italic;">### Закачиваем на FTP ###</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$BACKUP</span>
<span style="color: #007800;">DUMPFILE</span>=server1-<span style="color: #007800;">$NOW</span>.tar.gz
<span style="color: #007800;">$FTP</span> <span style="color: #660033;">-n</span> <span style="color: #007800;">$FTPS</span> <span style="color: #000000; font-weight: bold;"><<</span>END_SCRIPT
quote USER <span style="color: #007800;">$FTPU</span>
quote PASS <span style="color: #007800;">$FTPP</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$FTPD</span>
mput <span style="color: #007800;">$DUMPFILE</span>
quit
END_SCRIPT
 
<span style="color: #666666; font-style: italic;">### Подчищаем за собой ###</span>
 
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #007800;">$ARCHIVED</span>

Постовой

Тем, у кого впервые появился в доме щенок, можно только позавидовать. Столько радости, веселья приносит с собой собака, верный друг и помощник человека

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Комментариев: 7

  1. гениально.

    спасибо.

  2. Отлично, но не хватает команды bin перед передачей архива по ftp.

  3. не bin, а binary вот так :

    cd $BACKUP
    DUMPFILE=server1-$NOW.tar.gz
    $FTP -n $FTPS <<END_SCRIPT
    quote USER $FTPU
    quote PASS $FTPP
    cd $FTPD
    binary
    mput $DUMPFILE
    quit
    END_SCRIPT
  4. И ещё не забыть вписать между

    cd $FTPD
    и
    binary
    Это
    prompt
    , чтобы получилось:

    $FTP -n $FTPS

  5. Что-то глюкнуло, повторю:

    И ещё не забыть вписать между cd $FTPD и binary Это prompt, чтобы получилось:

    $FTP -n $FTPS <<END_SCRIPT
    quote USER $FTPU
    quote PASS $FTPP
    cd $FTPD
    prompt
    binary
    mput $DUMPFILE
    quit

    Иначе требует подтверждения, а его не последует и скрипт завершится без заливки на ftp

  6. NOW=$(date +"%a%H")

    создает не верную дату создает sat23 ( суббота 23 часа я так понимаю)

    freebsd как поправить ?

  7. Cecelia35Kerr | 2012-07-15 в 00:43:38

    I took my first loan when I was 20 and this aided my relatives a lot. Nevertheless, I need the short term loan once again.

Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)