Как создать резервную копию вашего сайта за пределами сайта с помощью 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/
С этой настройкой у нас есть базовая резервная копия наших данных, настроенных для дела.