Приветствую тебя, Хабраюзер! Я собираюсь тебе поведать об облачном хранилище C14 и о маленькой утилитке, облегчающей рутинную работу при работе с особенностями этого хранилища.
Забегая вперед скажу, что стоимость хранения 1 Тб составляет 2 евро в месяц. Это хранилище уже упоминалась ранее на Хабре: Ядерный бункер в Париже переоборудуют в дата-центр компании online.net
Если вы знакомы с C14, можете эту часть пропустить и перейти к следующей.
В online.net есть множество разнообразных услуг и несколько хранилищ. Нас интересует только C14. Берут деньги за хранение, удаление, открытие архива. Приблизительно оценить свои траты можете у них на сайте Под операциями подразумевается архивирование, удаление и открытие архива с файлами.
Предлагается следующая схема работы с хранилищем:
Мы можем в C14 создавать довольно много хранилищ (здесь, и далее по тексту это safe в их терминологии). У каждого хранилища может быть несколько архивов. Архив (archive) — это ос с ограниченным доступом. Подключиться можно через
По началу я хотел поместить весь код в один файл, но реальность оказалась гораздо суровее, поэтому решил поделиться со всеми моим решением.
Что утилитка умеет:
Что она не умеет:
Для использования вам потребуется
Для логов по xmpp вам потребуется
Загрузка скрипта для тех у кого нет composer и ему не нужны логи по xmpp:
Иначе:
Зарегистрируйтесь в online.net. Добавьте платежные данные. Сгенерируйте ключи ssh (если у вас их еще нет) через
Запросы к API применяются не всегда мгновенно. Поэтому в коде есть принудительный
Буду рад ответить на ваши вопросы. Ссылка на репозиторий.
Забегая вперед скажу, что стоимость хранения 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
тоже не всегда происходит с первого раза. Саппорт разводит руками и утверждает, что все нормально. Поэтому происходит несколько попыток соединиться с хранилищем.Краткая версия алгоритма для тех кому хочется разобраться получше
- Отправка сообщения о начале процесса
- Нахождение safe с заданным именем
- Поиск архива в safe куда складывать бекапы, если последний открывался 6 дней назад, то создается новый на 7 дней
- Создание необходимых папок
- Монтирование encfs (зашифрованного представления фс)
- Имена файлов включенных и исключенных из бекапа, шифруются (иначе rsync не поймет)
- Монтирование хранилища
- Копирование конфига encfs
- Очистка папки для временного бекапа (в случае неудачного бекапа там могут находиться файлы)
- Создание жесткие ссылок из прошлого бекапа
- Отправка сообщения о начале настоящего бекапирования
- Rsync
- Переименование временной папки
- Запись информации о дате успешного создания бекапа в описание архива C14
- Отправка сообщения что все прошло удачно
- Размонтирование sshfs и encfs
Буду рад ответить на ваши вопросы. Ссылка на репозиторий.