Приветствую тебя, Хабраюзер! Я собираюсь тебе поведать об облачном хранилище C14 и о маленькой утилитке, облегчающей рутинную работу при работе с особенностями этого хранилища.
image

Забегая вперед скажу, что стоимость хранения 1 Тб составляет 2 евро в месяц. Это хранилище уже упоминалась ранее на Хабре: Ядерный бункер в Париже переоборудуют в дата-центр компании online.net

Хранилище C14


Если вы знакомы с C14, можете эту часть пропустить и перейти к следующей.

В online.net есть множество разнообразных услуг и несколько хранилищ. Нас интересует только C14. Берут деньги за хранение, удаление, открытие архива. Приблизительно оценить свои траты можете у них на сайте Под операциями подразумевается архивирование, удаление и открытие архива с файлами.

Предлагается следующая схема работы с хранилищем:

Мы можем в C14 создавать довольно много хранилищ (здесь, и далее по тексту это safe в их терминологии). У каждого хранилища может быть несколько архивов. Архив (archive) — это ос с ограниченным доступом. Подключиться можно через sshfs, rsync, scp, ftp, webdav. Архив доступен для подключения в течении 2, 5 или 7 дней, после этого он будет автоматически заархивирован и помещен очень глубоко в бункер. Если нужно будет восстановить данные — создастся новая ос и в папке /buffer окажутся все ваши ранее сохраненные файлы. При попытке изменить восстановленный архив — произойдет копирование содержимого и архив будет дополнен.

C14 Backup Tool


Пара слов о BackInTime
Так как BackInTime не работает в таких условиях (из-за того, что копирование жестких ссылок на файлы идет через удаленный сервер путем выполнения rsync через ssh), а автоматизации и сохранности данных в случае пожара хочется, я написал программку.

По началу я хотел поместить весь код в один файл, но реальность оказалась гораздо суровее, поэтому решил поделиться со всеми моим решением.

Что утилитка умеет:

  • Шифровать данные на стороне клиента.
  • Не бекапить указанные папки. Регулярные выражения rsync в этом случае доступны только в режиме без шифрования.
  • Автоматически создавать safe, архивы, помещать туда ключи доступа и удалять устаревшие архивы.
  • А также, создавать инкрементные бекапы в рамках одного архива для уменьшения стоимости хранения.
  • Каждый архив представляет собой полностью рабочий бекап. Поэтому их можно удалять без опасений (если в описании к архиву прописана хотя бы одна строка с датой успешного архивирования).
  • Писать большие и не очень логи по xmpp.
  • Не требует composer, если вам не нужны логи по xmpp.
  • Несколько профилей для копирования разного рода данных.
  • Не использует официальную программу для обращений к API
  • Сохраняет конфиг encfs в каждый архив с данными

Что она не умеет:

  • Досконально проверять конфиг и необходимые зависимости
  • Работать, если у вас больше 100 safe или больше 100 архивов в одном safe.

Установка


Для использования вам потребуется

rsync
encfs
sshfs
ssh


Для логов по xmpp вам потребуется composer (опционально)

Загрузка скрипта для тех у кого нет composer и ему не нужны логи по xmpp:

git clone https://github.com/TheSaturn/C14BackupTool.git
cd C14BackupTool
cp config.example.php config.php


Иначе:

composer create-project thesaturn/c14-backup-tool
cp config.example.php config.php


Настройка:


Зарегистрируйтесь в online.net. Добавьте платежные данные. Сгенерируйте ключи ssh (если у вас их еще нет) через ssh-keygen. Отредактируйте config.php: вам потребуется ввести API ключ, выбрать папки и т.д. Запустите скрипт (php /path/to/main.php profileName) и ждите сообщения об успешном завершении бекапа. Добавьте скрипт в cron по желанию

Шишки:


Запросы к API применяются не всегда мгновенно. Поэтому в коде есть принудительный sleep(). Монтирование по sshfs и подключение rsync тоже не всегда происходит с первого раза. Саппорт разводит руками и утверждает, что все нормально. Поэтому происходит несколько попыток соединиться с хранилищем.

Краткая версия алгоритма для тех кому хочется разобраться получше
  1. Отправка сообщения о начале процесса
  2. Нахождение safe с заданным именем
  3. Поиск архива в safe куда складывать бекапы, если последний открывался 6 дней назад, то создается новый на 7 дней
  4. Создание необходимых папок
  5. Монтирование encfs (зашифрованного представления фс)
  6. Имена файлов включенных и исключенных из бекапа, шифруются (иначе rsync не поймет)
  7. Монтирование хранилища
  8. Копирование конфига encfs
  9. Очистка папки для временного бекапа (в случае неудачного бекапа там могут находиться файлы)
  10. Создание жесткие ссылок из прошлого бекапа
  11. Отправка сообщения о начале настоящего бекапирования
  12. Rsync
  13. Переименование временной папки
  14. Запись информации о дате успешного создания бекапа в описание архива C14
  15. Отправка сообщения что все прошло удачно
  16. Размонтирование sshfs и encfs


Буду рад ответить на ваши вопросы. Ссылка на репозиторий.
Поделиться с друзьями
-->

Комментарии (9)


  1. vtulin
    31.03.2017 14:59

    «Дешевые облачные бекапы с шифрованием для дома»
    Тема вводит в заблуждение, что статья будет о сравнении различных «дешёвых облачных бэкапов», а не о конкретном субъективном бэкапе.


    1. Waki
      03.04.2017 13:24

      Согласен, зашел с мыслью посмотреть список, а тут реклама какого-то C14


  1. lomalkin
    31.03.2017 19:08

    Спасибо за C14, недавно искал что-то подобное.


  1. rfvnhy
    31.03.2017 21:14

    Главное понимать, что облако в любой момент может потерять ВСЕ ваши данные и вы НИКАК на это не сможете повлиять, поэтому облаку можно доверить только 2-3+ бэкап, но никак не единственный.

    А так — бэкапы надо не только делать, но и проверять.

    Я тут не буду уже повторять, вот тут в соседней статье я в комментах уже привёл примеры что бывает если делать бэкапы на тот же носитель что и основные данные или хранить их в той же квартире:
    https://habrahabr.ru/company/acronis/blog/325362/

    Плюс возможная утеря ключа от шифрования(а если он хранится только в одном месте с данными? смысл тогда делать бэкапы то?) или сбой ПО при создании криптоконтейнеров…

    В общем много всего, можно не одну статью написать как правильно сделать бэкап даже для домашнего пользователя…


    1. webmasterx
      01.04.2017 02:27

      Главное понимать, что облако в любой момент может потерять ВСЕ ваши данные и вы НИКАК на это не сможете повлиять, поэтому облаку можно доверить только 2-3+ бэкап, но никак не единственный.

      поддерживаю
      А так — бэкапы надо не только делать, но и проверять.

      Поддерживаю. К счастью после архивации архива в C14 виден размер архива. Чир позволяет делать кое какие выводы
      Плюс возможная утеря ключа от шифрования(а если он хранится только в одном месте с данными? смысл тогда делать бэкапы то?)

      Encfs конфиг тоже копируется в архив с данными. Забыл упоминуть
      В общем много всего, можно не одну статью написать как правильно сделать бэкап даже для домашнего пользователя…

      По-моему можно запросто уместиться в одну. Если не вдаваться в реализацию. Ваших комментариев почти хватает на статью, а рассмотренно очень много


      1. rfvnhy
        01.04.2017 18:29

        >осле архивации архива в C14 виден размер архива.
        наиболее частая проблема при сбоях файловой системы — файл есть, его размер совпадает, но внутри месиво.
        Причем иногда видны куски файлов явно другого формата.

        У меня TrueCrypt раз глюканул — в текстовых файлах появились символы, явно далекие от текста…

        В общем надо задумываться о проверке как минимум контрольной суммы файлов, желательно хоть пару файлов открыть и посмотреть открываются ли, не забывать делать резервную копию ключа шифрования…
        Причём на достаточно надёжные носители и не забывать об их хранении территориально в разных местах…


  1. ArjLover
    01.04.2017 20:46

    По ссылке достаточно большой вес цены добавляет «operation». А он никак не упомянут в этой статье.


    1. webmasterx
      02.04.2017 04:14

      Упомянут. В развернутом виде.

      Приблизительно оценить свои траты можете у них на сайте. Под операциями подразумевается архивирование, удаление и открытие архива с файлами.


      1. ArjLover
        02.04.2017 15:12

        Наверно я неверно выразился, сам процесс действительно упомнят и развернуто Но вот его стоимость. Получается далеко не 2 евро за 1ТБ, как красиво заявлено и здесь и там. Ценообразование в лучших современных маркетинговых традициях.