Только Rsync — это мощный инструмент для перемещения данных внутри и между локальными и удаленными серверами. В сочетании с Expect интерактивные сеансы можно автоматизировать в командной строке для очень полезных целей.
Я считаю, что самым мощным приложением является процесс горячего резервного копирования на удаленные серверы каждый вечер. Хотя резервное копирование на оптические диски выполняется для автономного архивирования и сохранения данных, я считаю, что наиболее полезными являются резервные копии, которые хранятся на защищенных удаленных серверах, управляемых через Expect и Rsync.
Expect — находится по адресу http://expect.nist.gov/ — просто включает автоматические ответы на запросы в командной строке, когда вмешательство пользователя не является необходимым или разумным. Таким образом, можно выполнять резервное копирование в течение ночи, позволяя удаленную аутентификацию и ввод пароля при появлении запроса (когда «ожидается» — отсюда и название). Дополнительную информацию можно найти, запустив в командной строке man wait.
Эти файлы добавляются с расширением .exp, и, как вы увидите в приведенных ниже сценариях, используйте шебанг вверху для вызова программы Expect. Я установил разрешения для этих сценариев как исполняемые только пользователем root.
Rsync — находится по адресу http://samba.anu.edu.au/rsync/ — это инструмент для синхронизации данных, копирования файлов и так далее. Дополнительную информацию можно найти, запустив man rsync в командной строке.
Rsync может быть выгодным, так как он будет выполнять разностное резервное копирование после создания мастер-копии, создавая резервные копии файлов, которые были изменены, проверяя метку даты и размер файла, минимизируя пропускную способность и временные рамки, в которых нужно выполнять резервное копирование. Запуск ленточного или оптического дисковода резервного копирования можно настроить с удаленным сервером резервного копирования, чтобы дополнительно высвободить ночные ресурсы для вашего рабочего веб-сервера.
При использовании совместно, прямая схема резервного копирования может быть реализована для веб-серверов (среди других систем).
Вот сценарии в использовании. Они вызываются с сервера резервного копирования на целевой сервер, а данные хранятся в «горячем» резервировании для быстрого доступа:
Сценарий 1 — Резервное копирование базы данных MySQL
#!/usr/bin/expect
set timeout 19900
spawn /bin/bash
expect -re "]# "
send "rsync -avzb -e ssh [email protected]:/var/db/mysql/dumps/ /backup/servers/comain.com/mysqlr"
expect -re "password:"
sleep 2
send "rootpasswordr"
expect -re "total size is"
expect -re "]# "
send "exitr"
Теперь для резервного копирования данных домена (веб-сайтов) запускается второй скрипт:
Сценарий 2 — Резервное копирование домена
#!/usr/bin/expect
set timeout 19900
spawn /bin/bash
expect -re "]# "
send "rsync -avzb -e ssh [email protected]:/home/sites /backup/servers/domain.com/homer"
expect -re "password:"
sleep 2
send "rootpasswordr"
expect -re "total size is"
expect -re "]# "
send "exitr"
Чтобы разобраться в этом:
1) Expect вызывается (ваш путь может отличаться — откройте его, введя в командной строке «whereis Ожидается»)
2) отправить команду на удаленный сервер через ssh:
Параметры rsync: -a (архив, который сохраняет разрешения и ссылки среди других элементов), v (многословно), z (сжатие) и b (резервное копирование — добавляет ~ к существующим файлам назначения, что-то вроде создания версий резервных копий)
3) пароль ‘ssh’ ‘ожидается’, или в других случаях авторизованные ключи могут быть скопированы на удаленный сервер, чтобы обойти запрос пароля для ssh.
4) ожидается пароль — который отправляется через Expect на сервер для аутентификации и выполняется операция.
5) Сценарий завершается и закрывается.
Я назвал эти файлы mysql.backup.exp и domains.backup.exp и ввел их в cron для ежедневного запуска.
Хотя это не должно быть единственной процедурой резервного копирования — может быть очень полезно иметь работающий сервер для быстрого восстановления или просмотра данных резервного копирования.
Дополнительные сценарии также могут быть записаны для резервного копирования критических файлов конфигурации (например, каталога / etc) и других областей сервера (-ов).