LXF162:Облачное хранилище
|
|
|
Резервное копирование. Пусть все хранится в целости и сохранности, от греха подальше!
Облако файлов: Резервные копии
Нейл Ботвик рассматривает опции облачного хранения – на тот случай, если катастрофа постигнет вашу домашнюю систему.
Все согласны, что резервные копии – это хорошо, и некоторые даже их делают. Большинство делает их на внешний жесткий диск, что защитит вас при отказе основного жесткого диска, но мало поможет в более катастрофической ситуации – пожара, наводнения, кражи со взломом, а то и просто скачка напряжения или его кратковременного провала в момент подключения внешнего жесткого диска. Локальные резервные копии удобны и делаются быстро, но ненадежны. Внешние резервные копии имеют свои ограничения: скорость, стоимость, безопасность хранения ваших данных на чужом компьютере. Мы рассмотрим, как обеспечить сохранность ваших данных удаленным (или облачным, кому как нравится) хранением. Так как локальные резервные копии более удобны, если они под рукой, мы выберем подход, когда эти копии любым привычным вам способом синхронизируются с облачным сервером, вместо того, чтобы делать дубликаты, настраивая отдельный сервер резервного копирования.
Есть множество сервисов облачного хранения; и некоторые из них предоставляют «жилплощадь» бесплатно – с платными обновлениями за ее расширение. Это хорошие условия, если вам нужно меньше места, чем предоставляемое бесплатно, или вы точно знаете, сколько места вам понадобится, прежде чем платить за него. Здесь мы рассмотрим сервис, который в большей степени использует метод оплаты по факту использования – сервис S3 от Amazon. Он не предоставляет клиента рабочего стола, все делается через web-интерфейс; но здесь есть API, так что желающие могут написать клиента. Для Amazon S3 имеется кросс-платформенный GUI-клиент DragonDisk, доступный на http://www.dragondisk.com или через менеджер пакетов вашего дистрибутива. Однако резервные копии должны делаться автоматически в фоне и без вмешательства пользователя – ибо тот норовит откладывать подобное вмешательство, вспоминая о нем исключительно тогда, когда резервная копия нужна. Выбор здесь имеется, но мы остановились на s3cmd, программе командной строки, объединяющей функции ftp (программы, а не протокола) и rsync.
Откройте учетную запись
Первым делом нужно настроить учетную запись в Amazon S3. S3 не предоставляет бесплатных услуг в том виде, как, например, Dropbox, т. е. не выдает вам 2 ГБ навеки, но в нем есть бесплатный пробный период. Он предоставляет вам 5 ГБ хранилища и 15 ГБ в месяц бесплатной передачи, сроком на год или до тех пор, пока вы не превысите бесплатного лимита. Однако цены S3 весьма разумны и основаны только на реальном использовании. Вы платите за используемое место и за ширину полосы, используемой для передачи, хотя последняя цена минимальна, если вы всего лишь загружаете резервные копии через равные промежутки времени. Чтобы завести счет, вам придется указать информацию по вашей карте, но если вы уже делали покупки на Amazon, это, скорее всего, уже сделано. Для создания счета перейдите на http://aws.amazon.com/s3. Когда счет будет создан, вы получите два ключа: ключ доступа и секретный ключ; по сути это имя пользователя и пароль. Справочная man-страница s3cmd говорит, что их надо разместить в ~/.s3cmd, но файл, по крайней мере для релиза 1.1., будет ~/.s3cfg. Впрочем, это особой роли не играет, поскольку s3cmd создаст файл за вас, когда вы запустите
s3cmd –configure
Ответьте на вопросы, вырежьте и вставьте ключи, чтобы обеспечить их правильность, и s3cmd готов к работе. Запуск
s3cmd ls
не должен ничего отображать, если вы пока ничего не загрузили на свою учетную запись S3. Если он выдаст вам ошибку, проверьте настройку. Amazon S3 работает с корзинами [buckets] и объектами [objects]. Корзина – это контейнер. Их может быть до 100, но их вложение не допускается: S3 не поддерживает подпапок, но это не проблема, как мы увидим далее. Корзина создается из консоли web-управления, или с помощью s3cmd:
s3cmd mb s3://bucket-name
Названия корзин должны быть уникальными во всем S3 – попытавшись создать корзину с уже использованным именем, вы получите ошибку. Можно избежать подобных коллизий, если предварять названия корзин своим доменным именем, если оно у вас есть; вряд ли кто-то еще возьмет, например, такое имя
s3cmd mb s3://example.com-backups
Мы отметили, что S3 не поддерживает вложенных корзин, и в них могут быть включены только объекты (то есть файлы); так как же нам создавать резервные копии в папках или упорядочивать многочисленные копии, не создавая при этом множества корзин? Поскольку S3 не использует папок, / является законным символом в имени файла. Итак, когда вы сохраняете файл как somedir/somefile, это один файл в корне вашей корзины, но s3cmd будет интерпретировать его, как файл в папке. Чтобы загрузить такой файл, введите:
s3cmd put somedir/somefile s3://example.com-backup/somedir/somefile
Полезным побочным эффектом того, что все это – один файл, является то, что вам не нужно создавать «папок» на сервере до того, как вы начнете в них писать. Вы также можете скопировать сразу несколько файлов в удаленную псевдопапку:
s3cmd *.jpg s3://example.com-backup/photos/
Копирование файла за файлом надоедает очень быстро; лучше мы синхронизируем всю папку резервных копий с S3:
s3cmd sync /mnt/backups/ s3://bucket-name/backups/
Если вам кажется, что это похоже на синтаксис для rsync, то вы правы, вплоть до значения слэшей в именах пути. Если вы работали с rsync, то в опциях синхронизации s3cmd вы будете как дома. Например, можно использовать --exclude для указания папок или файлов, исключаемых из синхронизации, или --exclude-from для чтения этой информации из файла. Последняя опция полезна при создании резервных копий множественных путей в S3, поскольку можно указывать исключения отдельно для каждого пути и использовать тот же самый синтаксис, когда вызываете s3cmd. Одной значительное различие между rsync и s3cmd – то, что rsync использует --delete, а s3cmd использует --delete-removed. Другое – то, что s3cmd автоматически перенаправляет в папки, если его вызвать с помощью sync. Объяснение этих опций можно найти на man-странице.
Сравнение и контраст
Еще одно различие в том, как две команды изучают существующие файлы, обнаруживая в них различия: загрузка всех существующих файлов подряд – это явно не вариант, поэтому для их сравнения s3cmd использует два метода. Во-первых, сравниваются размеры файлов; а если они одинаковы, сравниваются контрольные хэши MD5 локальных и удаленных файлов. Вычисление удаленного хэша делается на сервере Amazon, и ваша полоса пропускания не нагружается. Однако при этом происходит небольшая задержка – еще одна транзакция с сервером (S3 начисляет плату за каждые 1000 или 10 000 транзакций), так что вы можете отключить эту операцию с помощью --no-check-md5. Для определения идентичности файлов часто хватает проверки их размера.
При использовании любого облачного хранения нужно учитывать безопасность ваших данных. Если вы создаете резервную копию своей домашней папки, там наверняка будет конфиденциальная информация. Сервиса, который шифрует ваши данные, недостаточно, потому что для этого ему придется указать ключи. Если вам нужна программа резервного копирования с собственным шифрованием, то лично мне показалась превосходной dar (http://dar.linux.free.fr). В ином случае вам придется рассмотреть возможность шифрования данных перед их загрузкой. Это можно сделать с помощью чего-то вроде GPG, но тогда придется хранить два экземпляра ваших резервных копий, если только вы не избавились от незашифрованной локальной копии после загрузки на сервер хранения. А тогда вам придется дешифровать все перед восстановлением – так что все равно понадобится лишнее место. Одно из решений – виртуальная файловая система ecryptfs: она хранит зашифрованные данные на вашем диске, но делает дешифрованную копию без необходимости удваивать дисковое пространство или заниматься дешифрованием вручную. Скажем, у вас есть две пустых папки в /mnt/backup, под названием plain и secret. Настройте файловую систему ecryptfs с помощью:
sudo mount -t ecryptfs /mnt/backup/secret /mnt/backup/plain
Задайте кодовую фразу для безопасности и примите настройки по умолчанию для прочих вопросов. Затем скопируйте пару файлов в plain и осмотрите содержание обеих папок. Вы увидите совпадающие файлы (шифровать имена файлов тоже можно), но файлы в secret будут нечитаемыми. Теперь размонтируйте:
sudo umount /mnt/backup/plain
Папка plain будет пуста, а secret будет по-прежнему содержать зашифрованные файлы. Повторите команду mount, чтобы вернуть назад содержимое. Осталось сделать резервную копию папки plain и синхронизировать папку secret с облаком:
s3cmd sync /mnt/backup/secret/ s3://bucket-name/backups/
Чтобы восстановить весь набор своих резервных копий, просто поменяйте в этой команде местами локальный путь и путь корзины. Резервные копии бывают весьма объемны, а в S3 нет опции resume при загрузке данных, и хорошо бы ваша программа резервного копирования делила резервные копии на более мелкие части; тогда, если соединение разорвется, процесс придется повторить только для части копий. Стоит также повторить команду sync по завершении передачи данных; предпочтительнее сделать это с помощью опции --no-check-md5, чтобы удостовериться, что все было загружено без повреждений. Второй этап s3cmd sync должен завершиться без передачи файлов. S3cmd отлично подходит для передачи данных партиями из командной строки или скрипта резервного копирования, но иногда файлы надо просмотреть. Помимо уже упоминавшегося DragonDisk и Amazon Web Console, есть также модули расширения браузера для Firefox и Chrome/Chromium; особо полезен S3fox. |