Назад | Перейти на главную страницу

Резервное копирование веб-сервера через SSH и Linux Live!

Вчера мой выделенный веб-сервер упал из-за сбоя оборудования. Он был заменен другим сервером Leaseweb. Это те же характеристики, но другой сервер, поэтому его необходимо переустановить. Это означает, что я должен сделать несколько резервных копий, прежде чем он будет повторно установлен, поскольку его нельзя просто клонировать.

Теперь сервер загружен с помощью GRML (Linux Live), и у меня есть доступ к нему через SSH и SFTP.

Как лучше всего сделать резервную копию всего? Я не хочу ничего пропустить. Мне нужны базы данных MySQL, файлы и так далее.

Какие-нибудь советы?

вы можете сделать локальный дамп ваших баз данных в архив и rsync их на другой сервер, например:

#!/bin/sh
SNAPSHOT_DATE=`date '+%d%m%y_%Hh%M'`  
LOCAL_TARBALLS=/tmp
# COMPRESSION MODE  
GZIP="$(which gzip)"  
[[ -z $GZIP ]] && aptitude -y install gzip  # for Debian's like
GZ_COMPRESSION_LEVEL="-9" # 1=low compression but fast, -9=high compression but slow  

# ##############  
# MYSQL dump  
# ##############  
TARBALL="mysql"  

# guess binary names  
MYSQL="$(which mysql)"  
MYSQLDUMP="$(which mysqldump)"  

# do it Safe  
[[ -z $MYSQL ]] || [[ -z $MYSQLDUMP ]] && echo "mysql commands not found" && exit 1  

# mysql version  
$MYSQL -V > $LOCAL_TARBALLS/$TARBALL/myql_version  
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"  
# dump dbs and generate one tarball by database  
for db in $DBS  
do  
 FILE="$LOCAL_TARBALLS/$TARBALL/mysqldump_$db-$SNAPSHOT_DATE.sql"  
 $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db > $FILE && $GZIP $GZ_COMPRESSION_LEVEL $FILE  
done  
# Or generate ONE dump for all databases  
# FILE=$LOCAL_TARBALLS/$TARBALL/"mysql_dump".$SNAPSHOT_DATE".sql"  
# $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS --all-databases > $FILE && $GZIP -9 $FILE  
else  
echo "Mysql: No backup of databases have been performed (because no or wrong credentials have been entered)"  
fi  

Вам нужно будет адаптировать некоторые данные в оболочке, указанные в качестве подсказки.

То же самое относится к вашим данным (/ home и т. Д.), Я имею в виду использование rsync ваши архивы резервных копий (rsync использует ssh). Даже эти rsync можно управлять в cronjob, чтобы резервное копирование выполнялось регулярно.

Надеюсь, поможет.

rsync - лучший способ сделать резервную копию ваших файлов. Если что-то выйдет из строя, запустите rsync снова, и он продолжит работу с последнего файла резервной копии, а не с начала.

Но перед этим нужно сделать резервную копию базы данных :)

Вы можете сделать резервную копию своей временной точки монтирования вашего сервера, используя tar через SSH:

ssh youraccount@yourremoteserver "tar jcfp - /livemntpoint" > mybackup.tar.bz

Сохранение позволит вам сохранить один и тот же идентификатор пользователя / группу, если вы хотите сохранить аналогичную настройку пользователей / разрешений между двумя системами.

Есть много способов сделать резервную копию ваших веб-файлов и вашей базы данных, лично я бы рекомендовал создать образ вашего экземпляра сервера в хорошем состоянии, если ваш хостинг-провайдер предлагает эту функцию. В дополнение к этому, взгляните на двуличие что позволяет делать резервные копии и шифровать файлы. У вас будет возможность хранить свои резервные копии в локальном файловом хранилище, поддерживаются scp / ssh, ftp, rsync, HSI, WebDAV, Tahoe-LAFS и Amazon S3 и другие.

Недавно я реализовал это для клиента, использующего Jenkins (главный и подчиненный) для управления заданием с уведомлением в случае сбоя. Я предпочитаю этот метод, поскольку он позволяет мне управлять резервными копиями как заданием, а не использовать cron на каждом отдельном сервере. Если вам когда-нибудь понадобится помощь с такой реализацией, дайте мне знать.