Duplicity — резервное копирование с шифрованием
О возможностях использования нашего облачного хранилища для резервного копирования мы уже писали. Архивирование и резервное копирование в хранилище осуществляется при помощи широкого спектра программного обеспечения; на нашем сайте опубликован список таких программ, который регулярно пополняется. Недавно мы узнали еще об одном интересном инструменте - Duplicity. Duplicity не только архивирует данные и загружает их на локальный или удаленный файловый сервер, но еще и шифрует их при помощи утилиты GnuPG, обеспечивая тем самым дополнительную защиту.
О возможностях использования нашего облачного хранилища для резервного копирования мы уже писали. Архивирование и резервное копирование в хранилище осуществляется при помощи широкого спектра программного обеспечения; на нашем сайте опубликован список таких программ, который регулярно пополняется.
Недавно мы узнали еще об одном интересном инструменте — Duplicity. Duplicity не только архивирует данные и загружает их на локальный или удаленный файловый сервер, но еще и шифрует их при помощи утилиты GnuPG, обеспечивая тем самым дополнительную защиту.
Зачем нужно шифрование?
Резервное копирование, как известно, нужно для того, чтобы обеспечить сохранность наиболее ценной и важной информации. Само по себе сохранение резервной копии в удаленном хранилище (пусть даже в самом надежном) не является достаточной мерой для ее защиты. О том, что абсолютно вся наша информация уязвима и может быть использована против нас, сегодня не говорит только ленивый. В новостях то и дело появляются сообщения об ухищрениях, которые киберпреступники используют для получения доступа к секретным документам. Полгода назад никому ранее не известный американский гражданин Эдвард Сноуден вызвал немалый переполох во всем мире, рассказав о том, как спецслужбы используют информационные технологии для слежки за людьми.
Разумеется, все жареные подробности, тиражируемые журналистами, нужно, что называется, делить на десять. Тем не менее, факт остается фактом: существует много разных способов, с помощью которых злоумышленники могут получить доступ к конфиденциальным данным. В такой ситуации эффективной мерой защиты может оказаться шифрование этих самых данных: они защищаются кодовым словом или ключом, и доступ к ним могут получить только те пользователи, которые это кодовое слово знают.
Конечно, злоумышленник вполне может, например, подобрать пароль и скачать зашифрованный файл из удаленного хранилища.
Но если он не знает кодового слова, открыть этот файл у него не получится. На подбор кодового слова может уйти не один год.
Duplicity поддерживает различные протоколы для соединения с файловым сервером: SSH/SCP, FTP, HSI, WebDAV, Tahoe-LAFS и Amazon S3. С поддержкой OpenStack Swift дело обстоит несколько сложнее.
На официальной man-странице указано, что для этого нужны дополнительные модули и плагины, но не дано подробных рекомендацией по их установке и настройке. Ниже мы расскажем о том, как «подружить» Duplicity с нашим хранилищем.
Установка и настройка
Программа Duplicity включена в репозитории большинства современных Linux-систем и устанавливается при помощи стандартного менеджера пакетов:
sudo apt-get install duplicity
Для работы с облачным хранилищем на клиентской машине должны быть обязательно установлены пакеты python-swiftclient и librsync:
sudo apt-get install python-swiftclient
sudo apt-get install librsync-dev
Теперь нужно установить плагин swiftbackend. Сначала клонируем с launchpad соответствующий репозиторий (для этого на клиентскую машину потребуется также установить систему контроля версий Bazaar — Launchpad использует именно ее):
sudo apt-get install bzr
bzr branch lp:~mhu-s/duplicity/swiftbackend
Затем выполним следующую команду:
cd swiftbackend && sudo python dist/setup.py install
По завершении установки Duplicity будет готова к работе с облачным хранилищем.
Настройка резервного копирования
Теперь откроем любой текстовый редактор и напишем небольшой скрипт для резервного копирования:
# Авторизационые данные для подключения к хранилищу
export SWIFT_USERNAME="имя пользователя"
export SWIFT_PASSWORD="пароль для входа в хранилище"
export SWIFT_AUTHURL="https://auth.selcdn.ru"
# Выполнение архивирования
duplicity /путь к папке/на клиентской машине swift://имя контейнера в хранилище
# Очистка авторизационных данных для безопасности
unset SWIFT_USERNAME
unset SWIFT_USERNAME
unset SWIFT_AUTHURL
Сохраним этот файл под именем, например, backup.sh и сделаем его исполняемым (chmod +x backup.sh). После этого выполним следующую команду:
$ ./backup.sh
Далее GnuPG попросит кодовое слово для доступа к файлам.
После этого начнется резервное копирование. Статистка будет отображена в консоли:
--------------[ Статистика резервного копирования ]--------------
StartTime 1391068911.00 (Thu Jan 30 12:01:51 2014)
EndTime 1391068911.02 (Thu Jan 30 12:01:51 2014)
ElapsedTime 0.02 (0.02 seconds)
SourceFiles 5
SourceFileSize 190210 (186 KB)
NewFiles 5
NewFileSize 190210 (186 KB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 5
RawDeltaSize 186114 (182 KB)
TotalDestinationSizeChange 185217 (181 KB)
Errors 0
-----------------------------------------------------------------
В указанный контейнер облачного хранилища будут добавлены новые файлы:
duplicity-full-signatures.20140130T073550Z.sigtar.gpg
duplicity-full.20140130T073550Z.manifest.gpg
duplicity-full.20140130T073550Z.vol1.difftar.gpg
Чтобы загрузить зашифрованную резервную копию из хранилища на локальную машину, нужно написать скрипт, содержащий те же самые авторизационные данные и отличающейся от приведенного выше только строчкой команды:
duplicity swift://имя контейнера /путь/к папке/на локальной/машине
Сохраним этот скрипт под именем restore.sh и сделаем соответствующий файл исполняемым.
При выполнении команды ./restore.sh GnuPG запросит кодовое слово. После ввода кодового слова все файлы из резервной копии будут загружены в указанную директорию на локальной машине.