|
||||
Создание зашифрованных резервных копий при помощи Duplicityrsync.net поддерживает использование утилиты 'duplicity', которая является компактной и мощной утилитой для автоматического шифрования и создания бэкапов. Дополнительную информацию о поддержке утилит шифрования на rsync.net, их преимуществах и недостатках можно получить по ссылке. Важно! Если вы используете duplicity для создания резервных копий под пользователем root (что предпочтительно), вам необходимо выполнять все операции и команды под данной учетной записью. Не используйте sudo для создания ключей GPG или запуска команд, т.к. вы можете получить ошибки вида "encryption failed: public key not found". Установка python и duplicityDuplicity является скриптом на языке python. Т.о. вам необходимо установить python (версии 2.3 или выше). Дополнительно, вам потребуется установить GPG и librsync. Данные компоненты уже могут быть установлены в вашей системе. Для установки duplicity вы можете использовать пакетный менеджер вашей системы. ИЛИ, вы можете получить исходные коды duplicity с сайта автора http://duplicity.nongnu.org/ и выполнить установку командой: # python setup.py install
Вы можете выбрать альтернативное местоположение. Например, /usr/local: # python setup.py install --prefix=/usr/local Вы можете использовать директиву --librsync-dir для указания местоположения librsync в вашей системе. Для Mac OSX с использованием MacPorts эта опция может быть необходима для установки duplicity: # python setup.py install --librsync-dir=/opt/local Создание ключей SSHХотя duplicity имеет возможность для запроса пароля SSH (см. опцию --ssh-askpass), вы, вероятно, не захотите вводить его каждый раз во время операции резервного копирования. Т.о., если вы желаете автоматизировать процесс создания бэкапов вам необходимо безпарольное соединение SSH при использовании duplicity. Воспользуйтесь инструкциями для создания ключей и установки безпарольного соединения SSH. Создание ключа GPGDuplicity шифрует резервные копии при помощи GPG. Это означает, что вам требуется создать как минимум один ключ GPG который будет использоваться duplicity для шифрования данных и подписи файлов. Имеется возможность создания двух независимых ключей (возможно, для разных пользователей) и их использования для шифрования и цифровой подписи. Более детальное описание вы можете получить по ссылке: http://www.debian-administration.org/articles/209 Для создания ключа GPG, который будет использоваться и для шифрования и цифровой подписи, зайдите в систему под учетной записью пользователя, из под которого будут создаваться резервные копии (обычно это root). Важно, чтобы это был тот же самый пользователь, для которого выше были созданы ключи SSH. Выполните команду: # gpg --gen-key При создании ключа, стоит выбрать опции по умолчанию: Please select what kind of key you want: (1) DSA and Elgamal (default) (2) DSA (sign only) (5) RSA (sign only) Your selection? 1 DSA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) Requested keysize is 2048 bits После создания ключа, вы можете проверить его, выполнив команду: # gpg --list-keys Вывод команды должен быть похож на: /root/.gnupg/pubring.gpg ------------------------ pub 1024D/ABAB2AB3 2007-04-23 uid Home File sub 2048g/12345678 2007-04-23 В выводе отображаются два ключа - публичный и приватный. Обратите внимание на id публичного ключа - в текущем примере это "ABAB2AB3". Создание резервных копийНе рекомендуется размещать резервные копии duplicity в корневой директории файловой системы rsync.net, т.к. duplicity генерирует множество служебных дополнительных файлов. Создайте директорию на файловой системе rsync.net где бы вы хотели хранить резервные копии. В данном примере мы создадим директорию "backups": # ssh 1234@usw-s001.rsync.net mkdir backups Если вы выполните команду из под того же пользователя, для которого были созданы ключи SSH, команда должна будет выполниться без запроса пароля. Ваша первая команда duplicity должна выглядеть как: # duplicity full --encrypt-key="ABAB2AB3" /your/files \ scp://1234@usw-s001.rsync.net/backups Выполнение команды приведет к выводу большого количества информации, однако, оно должно завершиться без ошибок. Когда будет запущен процесс создания резервной копии, утилита запросит ключевую фразу для ключа GPG. Если же в процессе работы возникли ошибки (обычно они начинаются со строк "Traceback (most recent call last):") вам необходимо задать опцию -v9: # duplicity full -v9 --encrypt-key="ABAB2AB3" /your/files \ scp://1234@usw-s001.rsync.net/backups и отправить вывод команды по адресу support@rsync.net. Последующий запуск duplicityЕсли первая резервная копия создалась без ошибок, то в дальнейшем вы можете просто запускать утилиту с указанием опции "inc" вместо "full": # duplicity inc --encrypt-key="ABAB2AB3" /your/files \ scp://1234@usw-s001.rsync.net/backups Каждый запуск такой команды будет добавлять только изменившиеся части данных относительно первой полной резервной копии. При таком использовании, с течением времени, будет получаться, что вы храните не только актуальные данные, но и данные которые уже могут не существовать или быть ненужны, однако занимают место. Таким образом, вам необходимо решить сколько времени должны храниться данные и установить опцию "remove-older-than" позволяющую duplicity удалять резервные копии старше чем требуемое количество дней. Например: # duplicity remove-older-than 30d -v9 --encrypt-key="ABAB2AB3" /your/files \ scp://1234@usw-s001.rsync.net/backups Для получения информации по опции remove-older-than и формате задания времени вы можете обратиться к документации duplicity. Помните! Вы не можете удалять бэкапы более новые, нежели ваш последний полный бэкап. Т.о., в примере выше, использование опции remove-older-than ни на что не влияет, т.к. утилита не может удалять резервные копии, которые были созданы после последнего полного бэкапа. Чтобы данная опция работала, необходимо периодически создавать полные резервные копии. Помните! Duplicity не позволяет задать одновременно опции для операций создания и удаления резервных копий. Директива "remove" должна выполняться отдельной командой. Помните! Необходимо добавлять директиву --force каждый раз, когда требуется удаление или перезапись данных. Т.о. вам требуется добавлять директиву --force для всех операций, которые используют команды "remove" или "remove-older-than". АвтоматизацияВы можете создать GPG ключи без использования ключевой фразы. В общем случае, это не самая удачная практика, однако, если вам требуется только шифрование данных на rsync.net, то этого будет вполне достаточно, т.к. ключевая фраза используется только для вашего приватного ключа. С другой стороны, вам требуется создать резервные копии ключей GPG и, если у вас нет надежного способа их хранения, то ключевая фраза необходима. Ниже предоставлен пример скрипта, который экспортирует ключевую фразу. Итак, вам необходимо создать скрипт, экспортирующий ключевую фразу и запускающий команды duplicity: #!/bin/bash export PASSPHRASE=yourpassphrase duplicity inc --encrypt-key "ABAB2AB3" /your/files \ scp://1234@usw-s001.rsync.net/backups Убедитесь, что скрипт имеет бит исполнения (chmod +x) и задайте расписание его выполнения в crontab. Проверка и восстановлениеДля проверки ваших резервных копий (а мы настоятельно рекомендуем их проверять) просто поменяйте местами источник и приемник и добавьте директиву "verify": # duplicity verify --encrypt-key="ABAB2AB3" \ scp://1234@usw-s001.rsync.net/backups /your/files Данная операция не восстанавливает файлы, а просто сравнивает и проверяет их. Вы можете добавить директиву -v9 для отображения полной информации. Для восстановления данных поменяйте источник и приемник местами, как показано выше при проверке. Однако помните, что duplicity не позволяет восстановление с затиранием имеющихся данных. Нам необходимо создать директорию для восстановления и указать ее в соответствующей директиве: # mkdir /your/restored/files # duplicity --encrypt-key="ABAB2AB3" \ scp://1234@usw-s001.rsync.net/backups /your/restored/files Мы настоятельно рекомендуем проводить периодическую проверку и восстановление данных вне зависимости от метода создания резервных копий. Дополнительные замечанияАвтор duplicity, Kenneth Loafman, дал полезный совет: Как правило, я храню несколько полных резервных копий и использую директивы duplicity в следующем порядке: # duplicity cleanup target # duplicity remove-older-than 30d target # duplicity full|inc source target Хранение нескольких полных бэкапов и их периодическая очистка позволяет хорошо экономить место. При этом никогда не хранится менее двух полных бэкапов. Я создаю полную копию каждое воскресенье по cron и инкрементальную копию каждую ночь. Это позволяет иметь резервные копии за последний месяц. Если у вас возникли вопросы по использованию duplicity, вы можете задать их по адресу support@rsync.net. |
||||
|
|
||||