Поиск по сайту:

Как создать резервную копию вашего сайта за пределами сайта с помощью Rsync на Centos 6


Статус: устарело

В этой статье рассматривается версия CentOS, которая больше не поддерживается. Если вы в настоящее время используете сервер под управлением CentOS 6, мы настоятельно рекомендуем обновить или перейти на поддерживаемую версию CentOS.

Причина:

См. вместо этого:

Следующий учебник DigitalOcean может представлять непосредственный интерес, поскольку он дает общее представление о том, как использовать rsync для синхронизации локального каталога с удаленными:

  • Как использовать Rsync для синхронизации локальных и удаленных каталогов

Введение

В этой статье представлен быстрый способ резервного копирования наиболее распространенных вещей в типичном сценарии веб-хостинга: файлов веб-сайта и данных базы данных. Мы настроим полное ежедневное резервное копирование папки веб-сайта и копирование этих данных на удаленный сервер (это также может работать для другого VPS). Мы также настроим пример rsync, чтобы просто скопировать добавочные изменения. Наконец, хорошо настройте резервное копирование базы данных MySQL. Описанные процедуры используют несколько простых команд Bash, rsync и cron для планирования резервного копирования. Например данные, мы можем установить Wordpress в соответствии с этим

DigitalOcean предоставляет снимки

Существует два способа резервного копирования: инкрементное и полное резервное копирование. Полный

Полное резервное копирование

Полная резервная копия обычно делает следующее:

  • Создать архив всех файлов в папке
  • Скопируйте полученный архив на удаленный сервер.

Как уже отмечалось, наши данные будут находиться в каталоге /var/www/wordpress. Мы укажем расположение папки резервного копирования.

mkdir -p /backup/wordpress

Приведенная выше команда создаст каталог /backup и

tar -czf /backup/wordpress/initial_backup.tar.gz
/var/www/wordpress

Tar создаст gzip-архив в

tar -czf /backup/cms_systems_backup.tar.gz /var/www/wordpress
/var/www/drupal /var/www/joomla

Последняя команда сделает резервную копию всех наших установленных систем cms.

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

tar -czf /backup/wordpress/wordpress-`date '+%m%d%y'`.tar.gz
/var/www/wordpress

Давайте посмотрим, что мы имеем сейчас:

[root@Backup ~]# ls -l /backup/wordpress/
total 9760
-rw-r--r-- 1 root root 4995743 Apr 17 12:16 initial_backup.tar.gz
-rw-r--r-- 1 root root 4995743 Apr 17 12:25 wordpress-041713.tar.gz
[root@Backup ~]#

У нас есть два файла, один называется initial_backup, другой называется

EDITOR=nano crontab -e

Он откроет файл crontab в текстовом редакторе. По умолчанию делайте CentOS

crontab -e

Теперь нам нужно указать cron выполнять резервное копирование, скажем, каждый день в 3:30 утра, когда

MAILTO=email@example.com
30 3 * * * /bin/tar -czf /backup/wordpress/wordpress-`date
+\%m\%d\%y`.tar.gz /var/www/wordpress

Мы сохраняем файл с помощью CTRL-X и подтверждаем с помощью Y и Enter. Выше

Скопируйте резервные копии на другой удаленный сервер

Чтобы скопировать резервные копии на другой удаленный сервер, мы будем использовать scp — безопасную копию.

ssh-keygen

Мы можем пока оставить парольную фразу пустой и использовать

cat .ssh/id_rsa_backup.pub

Нам нужно скопировать эту общедоступную часть SSH-ключа на удаленный сервер, в

scp .ssh/id_rsa_backup.pub
backup@backup.example.com:/home/backup/backup_key.pub

Будет запрошен пароль пользователя резервного копирования. Мы скопировали файл,

ssh backup@backup.example.com "mkdir -p /home/backup/.ssh"
ssh backup@backup.example.com "chmod 700 /home/backup/.ssh"
ssh backup@backup.example.com "touch /home/backup/.ssh/authorized_keys"
ssh backup@backup.example.com "chmod 600 /home/backup/.ssh/authorized_keys"
ssh backup@backup.example.com "mkdir -p /home/backup/backups"

Несколько приведенных выше команд создали каталог для работы SSH, если он

ssh backup@backup.example.com "cat /home/backup/backup_key.pub >>
/home/backup/.ssh/authorized_keys"

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

Теперь давайте скопируем файл резервной копии туда:

scp -i .ssh/id_rsa_backup
/backup/wordpress/wordpress-041713.tar.gz
backup@backup.example.com:/home/backup/backups

Если наша настройка ключа была правильной, файл будет скопирован, и мы не будем

ssh backup@backup.example.com "ls -l /home/backup/backups"

Хорошо, теперь мы можем запланировать это действие и в crontab. Начать

EDITOR=nano crontab -e

Теперь мы изменим нашу строку резервного копирования: мы хотим добавить информацию, чтобы скопировать нашу

30 3 * * * /bin/tar -czf /backup/wordpress/wordpress-`date
+\%m\%d\%y`.tar.gz /var/www/wordpress;/usr/bin/scp -i
/root/.ssh/id_rsa_backup /backup/wordpress/wordpress-`date
+\%m\%d\%y`.tar.gz
backup@backup.example.com:/home/backup/backups

Примечание: это не обычный способ сделать это, было бы лучше настроить

Инкрементное резервное копирование

Но что, если у нас есть собственное программное обеспечение для резервного копирования на другом сервере? Мы только

ssh backup@backup.example.com "mkdir -p /home/backup/sync"
rsync -avz --delete -e "ssh -i /root/.ssh/id_rsa_backup"
/var/www/wordpress backup@backup.example.com:/home/backup/sync

Первая строка создает каталог моментальных снимков, а вторая копирует

EDITOR=nano crontab -e

Строка crontab должна выглядеть так:

30 3 * * * /usr/bin/rsync -avz --delete -e "ssh -i
/root/.ssh/id_rsa_backup" /var/www/wordpress
backup@backup.example.com:/home/backup/sync

Теперь на нашем удаленном сервере всегда будет свежая синхронизированная копия

Резервная база данных

Мы также можем сделать резервную копию нашей базы данных. Во-первых, мы хотим сбросить данные. Если

mkdir /backup/mysql
mysqldump < wordpress -u wordpressuser -ppassword | gzip >
/backup/mysql/initial.sql.gz

Эта команда создала файл SQL initial.sql.gz, сжатый gzip.

0 4 * * * /usr/bin/mysqldump < wordpress -u wordpressuser
-ppassword | /bin/gzip > /backup/mysql/mysql--`date +\%m\%d\%y`.sql.gz

Теперь мы также можем комбинировать его с scp или rsync для удаленного копирования.

0 4 * * * /usr/bin/mysqldump < wordpress -u wordpressuser
-ppassword | /bin/gzip > /backup/mysql/mysql-`date +\%m\%d\%y`.sql.gz;
/usr/bin/scp -i /root/.ssh/id_rsa_backup /backup/mysql/mysql-`date
+\%m\%d\%y`.sql.gz  backup@backup.example.com:/home/backup/

С этой настройкой у нас есть базовая резервная копия наших данных, настроенных для дела.