Бекап

Тут описывается нелёгкий путь настройки ОС FreeBSD, начиная с установки дистрибутива и заканчивая настройкой каждого сервиса
Ответить
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Бекап

Сообщение RomA »

Введение:
Админы делятся на две категории - тех, кто не делает бекап и тех, кто УЖЕ делает (бородатая шутка)

Задача:
Делать бекап своих файлов и баз. Хранить их где нибудь вне своих серверов.

Выбор решения:.
Так, как это всего одна машинка, то делать будем скриптом, не заморачиваясь на систему бекапов. Ну а так, как файлы будут храниться где-то далеко и не у нас, то включим режим параноика и зашифруем свой бекап.

В качестве места хранения я выбрал Яндекс.Диск - с ним можно работать через WebDAV, а значит не придётся ставить левых программ, которые не всегда есть под FreeBSD.

Хотя вообще место для хранения так себе - у всех этих облаков прописано, что:
1) Всё что вы туда загрузили становится собственность облака
2) Защищать свои данные вы не можете - пароль ставить нельзя
Про шифрование там ничего не говорится, но возможно, когда нить появится. таким образом это не самое надежное хранилище бекапов, но это все, что можно себе сейчас позволить. Наверное для снижения рисков стоит хранить бекапы в разных облаках или местах.

Решение:

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

### System Setup ###
BACKUP=/mnt/bakup
MYSQLDUMP=/usr/local/bin/mysqldump
GZIP=/usr/bin/gzip
MYSQL=/usr/local/bin/mysql
SITEDIR=/usr/home/www
TAR="/usr/bin/tar -P -czf"
GPG="/usr/local/bin/gpg --output"
CURL="/usr/local/bin/curl -s --user yuor_mail@yandex.ru:P@$$w0rd1"

### Mysql ###
MUSER="root"
MPASS="P@$$w0rd2"
MHOST="localhost"

################################################
#####
################################################

NOW=`date +%m-%d-%Y`            # date seychar
RNOW=`date -v-7d +%m-%d-%Y`     #date togda

################################################
#####
################################################
rm $BACKUP/*
rm $BACKUP/database/*.gz
rm $BACKUP/www/*.tgz

################################################
#####
################################################

DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
    do
    if [ "$db" != "performance_schema" ] ; then
        FILE=$BACKUP/database/$db.$NOW.sql.gz
    echo $db;
#       $MYSQLDUMP --skip-events --add-drop-table --allow-keywords --single-transaction -q -c -u $MUSER -h $MHOST -p$MPASS $db $i | $GZIP -9 > $FILE
        $MYSQLDUMP --add-drop-table --allow-keywords --single-transaction -q -c -u $MUSER -h $MHOST -p$MPASS $db $i | $GZIP -9 > $FILE
    fi
done

DBS1="$(ls $SITEDIR)"
for file1 in $DBS1
    do

    FILE2=$BACKUP/www/$file1.$NOW.tgz
    echo "$TAR $FILE2 $SITEDIR/$file1"
    $TAR $FILE2 $SITEDIR/$file1
done

$TAR $BACKUP/database.$NOW.tgz $BACKUP/database
$TAR $BACKUP/www.$NOW.tgz $BACKUP/www

$GPG $BACKUP/database.$NOW.gpg --encrypt --recipient backup@cz6.ru $BACKUP/database.$NOW.tgz
$GPG $BACKUP/www.$NOW.gpg --encrypt --recipient backup@cz6.ru $BACKUP/www.$NOW.tgz

$CURL -T $BACKUP/database.$NOW.gpg https://webdav.yandex.ru/vps1/
$CURL -T $BACKUP/www.$NOW.gpg https://webdav.yandex.ru/vps1/

/bin/rm $BACKUP/database.$NOW.gpg
/bin/rm $BACKUP/www.$NOW.gpg

$CURL --request DELETE https://webdav.yandex.ru/vps1/database.$RNOW.gpg
$CURL --request DELETE https://webdav.yandex.ru/vps1/www.$RNOW.gpg

exit 0

Ответить