====== Бэкап сервера при помощи Rsync ====== ====== Задача ====== Есть боевой сервер, на котором крутятся проекты. Необходимо время от времени (минимум - раз в сутки) забэкапить эти проекты на другой сервер. Есть огромное количество всяких очень даже замечательных программ и скриптов для резервного копирования. Но они или слишком круты или предельно просты. Бэкапалка должна уметь: * Синхронизировать файлы, архивы и т.д. по решению сервера бэкапа, т.к. боевой и так всякими делами занят * Работать по расписанию * Подключение и авторизация по ключу * Передача данных по защищенному каналу * Настраиваемое кол-во пространства на диске, отведенного под бэкапы (т.е. периодически прибираться за собой и не забивать все место на диске) * Работать тихонько и напоминать о себе только отчетами Выбираем золотую середину: rsync + cron + несколько скриптов для облегчения жизни. ====== Термины ====== MainServer (MS) - основной, боевой сервер StorageServer (SS) - сервер для хранения бэкапов ====== Устанавливаем rsync ====== На обоих серверах устанавливаем rsync и ssh (если это еще не сделано): $ sudo apt-get install ssh rsync ====== Создаем пользователя для бэкапа ====== На обоих серверах создаем одинаковых пользователей (одинаковым должно быть как имя пользователя, так и группа - это пригодится в дальнейшем). $ sudo groupadd --gid 2222 rsyncbackup $ sudo useradd --comment "Rsync backup user" --gid 2222 --uid 2222 --create-home -d /home/rsyncbackup rsyncbackup $ sudo passwd rsyncbackup и вводим пароль пользователя rsyncbackup 2 раза. В примере 2222 - идентификатор и группы и пользователя, необходимо перед запуском команды убедить что он не занят. ====== Создаем ключи авторизации ====== Логинимся на сервер SS, создаем ключ для авторизации: $ ssh rsyncbackup@SS $ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/rsyncbackup/.ssh/id_rsa): Created directory '/home/rsyncbackup/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/rsyncbackup/.ssh/id_rsa. Your public key has been saved in /home/rsyncbackup/.ssh/id_rsa.pub. The key fingerprint is: 57:bb:27:1e:c6:7d:5e:5c:c4:59:92:eb:c5:21:84:5c rsyncbackup@nas The key's randomart image is: +--[ RSA 2048]----+ | . +E...| | o ..+o| | . .++| | . ...o| | S . .. ..| | . . o...| | * o +| | o + o.| | . .| +-----------------+ $ ====== Копируем ключи на сервер ====== C сервера SS копируем ключ: $ ssh-copy-id -i /home/rsyncbackup/.ssh/id_rsa rsyncbackup@MS The authenticity of host 'MS (XXX.XXX.XXX.XXX)' can't be established. RSA key fingerprint is ....... Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'MS,XXX.XXX.XXX.XXX' (RSA) to the list of known hosts. rsyncbackup@MS's password: Now try logging into the machine, with "ssh 'rsyncbackup@MS'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. $ Пробуем подключиться: $ ssh rsyncbackup@MS Ubuntu 10.04.4 LTS Welcome to the Ubuntu Server! * Documentation: http://www.ubuntu.com/server/doc Uptime: 20:35:31 up 147 days, 16:29, 1 user, load average: 0.12, 0.06, 0.08 0 packages can be updated. 0 updates are security updates. $ Если не задает вопросов о пароле - все получилось и работает. Если спрашивает пароль - проверяем настройки сервера MS, следующие директивы в файле /etc/ssh/sshd_config должны быть установлены так: RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeyFile %h/.ssh/authorized_keys и проверить следующие директивы в файле /etc/ssh/ssh_config: # IdentityFile ~/.ssh/identity # IdentityFile ~/.ssh/id_rsa # IdentityFile ~/.ssh/id_dsa ====== Настраиваем Rsync ====== Пишем небольшой скриптик /home/rsyncbackup/backup.sh: #!/bin/sh rsync -e ssh -avzP --stats rsyncbackup@MS:/var/backup /mnt/backup Этот скрипт копирует с сервера MS все содержимое папки /var/backup и всех вложенных папок в локальную папку /mnt/backup Осталось добавить вызов этого скрипта в cron и станет хорошо. {{tag>rsync ssh авторизация_по_ключу бэкап}}