-
Резервная копия и передача ее на удаленный сервер SSH
Исходные данные:
- Сервер Источник CentOS 5 (web server)
- Сервер Приемник FreeBSD 7.3
Задача:
- Резервная копия статической папки (содержимое веб-сайта), со сжатием и оправкой архива на удаленный сервер.
- Резервная копия БД MySQL (того же веб-сайта), со сжатием и отправкой архива на удаленный сервер.
- Делать эти операции по расписанию, проверка и удаление старых резервных копий.
Настройка соединения между сервером Источником и сервером Приемником резервных копий посредством SSH подключения без ввода пароля:
- Авторизуемся на сервере Источнике через SSH соединение.
- Генерируем ключ для подключения посредством SSH
- # ssh-keygen -t rsa
- Выберите в качестве пути ~/.ssh/id_rsa
- Переносим любым способом ~/.ssh/id_rsa.pub на Приемник
- Авторизуемся на сервере Приемнике через SSH соединение.
- На сервере Приемнике выполняем команду
- $ cat /home/user2/id_rsa.pub >> ~/.ssh/authorized_keys
Создаем папку для хранения временных резервных копий на сервере Источнике:
# mkdir /home/source/backup
Настройка скрипта для создания резервной копии директории /home/source/www/ (сжатие в архив www.tgz):
На сервере Источнике создаем файл скрипт для создания резервной копии директории /home/source/www/ (например /home/source/backup-www.sh):
#!/bin/sh tar -cf /home/source/backup/www.tgz /home/source/www/
Объяснение: /home/source/backup/www.tgz - как будет выглядеть готовый архив резервной копии папки /home/source/www/
Настройка скрипта для создания резервной копии БД MySQL (сжатие в архив dump.sql.gz):
На сервере Источнике создаем файл скрипт для создания резервной копии БД MySQL (например /home/source/backup-sql.sh):
#!/bin/sh mysqldump -u authuser --password=p@ssw0rd database | gzip > /home/source/backup/dump.sql.gz
Объяснение: Создаем резервную копию базы данных "database" и сжимаем ее в архив "dump.sql.gz". Имя пользователя и пароль явно понятны.
На сервере Приемнике создаем папки для хранения архивов:
$ mkdir ~/backup-www $ mkdir ~/backup-sql
Настройка скрипта для отправки архивов www.tgz и dump.sql.gz с сервера Источника на сервер Приемник, с проверкой наличия архива старше 4 дней (например /home/source/backup-scp.sh):
#!/bin/sh OLDDATE=`date --date='4 days ago' +%Y-%m-%d`; CURDATE=`date +%Y-%m-%d`; HOST="[email protected]"; OLDFILE="~/backup-www/$OLDDATE-www.tgz"; OLDSQLF="~/backup-sql/$OLDDATE-dump.sql.gz"; if ssh $HOST test -e "$OLDFILE" ; then ssh $HOST "rm $OLDFILE"; fi if ssh $HOST test -e "$OLDSQLF" ; then ssh $HOST "rm $OLDSQLF"; fi scp /home/source/backup/www.tgz $HOST:~/backup-www/$CURDATE-www.tgz scp /home/source/backup/dump.sql.gz $HOST:~/backup-sql/$CURDATE-dump.sql.gz
Настройка выполнения указанных выше скриптов (backup-www.sh, backup-sql.sh, backup-scp.sh) по расписанию:
На сервере Источнике создаем задание cron командой:
# crontab -e
- Скрипт backup-www.sh будет выполняться каждый день в 2:00
- Скрипт backup-sql.sh будет выполняться каждый день в 3:00
- Скрипт backup-scp.sh будет выполняться каждый день в 4:00
Как это выглядит в файле cron:
0 2 * * * /bin/sh /home/source/bckp_www.sh 0 3 * * * /bin/sh /home/source/bckp_sql.sh 0 4 * * * /bin/sh /home/source/bckp_scp.sh
Все готово!
SSH соединение без ввода пароля CentOS 6.5 размер экрана консоли Hyper-V 6.3
Резервная копия и передача ее на удаленный сервер SSH
Панель пользователя
Облако тэгов