Админы делятся на две категории - тех, кто не делает бекап и тех, кто УЖЕ делает (бородатая шутка)
Задача:
Делать бекап своих файлов и баз. Хранить их где нибудь вне своих серверов.
Выбор решения:.
Так, как это всего одна машинка, то делать будем скриптом, не заморачиваясь на систему бекапов. Ну а так, как файлы будут храниться где-то далеко и не у нас, то включим режим параноика и зашифруем свой бекап.
В качестве места хранения я выбрал Яндекс.Диск - с ним можно работать через 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