Резервне копіювання в «Хмарне сховище»

хмарне

Жоден серйозний проект не може обходитися без виконання регулярного резервного копіювання. Крім вибору та налаштування системи архівування даних потрібно визначитися, де дані зберігати. Причому, бажано не на тому ж сервері, де бекап робиться, а мати можливість зберігати дані в якомусь незалежному надійному місці.

Спеціально для цього чудово підходить наше «хмарне сховище». Зберігання 1 Гб даних буде коштувати лише 3 рублі на місяць.

З чого почати?

Щоб почати користуватися «хмарним сховищем», потрібно зареєструватися (повна реєстрація займає близько 5 хвилин). Для всіх нових облікових записів доступно 10 бонусних рублів, за допомогою яких можна повноцінно протестувати послугу. Якщо ви вже є нашим клієнтом і хочете протестувати послугу – на запит через тикет систему вам буде нараховано 10 бонусних рублів. Наразі все готове до роботи.

Створення додаткового користувача знаходиться на вкладці «Хмарне сховище» → «Налаштування доступу». Введіть будь-яке ім'я для користувача та натисніть «Створити» — з'явиться діалог користувача.

резервне
У налаштуваннях користувача потрібно згенерувати новий пароль. Опція зберігання пароля не є обов'язковою, але тоді, надалі, пароль буде неможливо підглянути в налаштуваннях користувача, а тільки згенерувати новий. І обов'язково треба відзначити галочкою контейнери, до яких користувач матиме доступ. Не забудьте зберегти налаштування, натиснувши «Зберегти зміни доступу».

Тепер все готове для настроювання процесу резервного копіювання на сервері.

Простий варіант

Якщо у вас є сайт середніх розмірів з базою даних MySQL, яку ви хочете регулярно бекапити, то достатньо завантажити два спеціально підготовлені скрипти і вказатинеобхідні налаштування.

Перше що знадобиться, це утиліта «supload» - дозволяє зручно завантажувати файли в сховище. Встановлюється вона наступним чином (імовірно, на вашому сервері встановлена ​​ОС Debian):

Далі потрібно завантажити та налаштувати скрипт для виконання бекапа:

Результат виконання буде виведений у консоль.

резервне

Тепер потрібно налаштувати періодичність виконання бекапу, зробити це можна за допомогою cron. Для цього просто переміщуємо скрипт у спеціальну директорію:

Після цього cron автоматично запускатиме скрипт архівування раз на добу.

Як відновити дані?

Якщо так сталося, що потрібно отримати дані з резервної копії, зробити це можна наступним способом.

Швидше за все ви завантажували файли бекапів у приватний контейнер, звідти сам файл можна легко завантажити, використовуючи веб-інтерфейс файлового менеджера. Але зазвичай зручніше завантажити файл відразу на сервер або надати доступ до нього іншій людині. Це можна зробити за допомогою спеціальних посилань - це дозволить безпечно завантажити файл на сервері або передати його комусь іншому, не змінюючи тип контейнера на публічний.

Для цього в веб-інтерфейсі файлового менеджера знаходимо потрібний файл, праворуч від нього натискаємо на піктограму операцій (виглядає як шестірня) і вибираємо пункт «Відкрити доступ»:

копіювання
Для посилання можна обмежити час дії, кількість завантажень файлу і, за бажання, ще й задати пароль:

резервне

Після завантаження файлу з бекапом на сервер потрібно виконати розпакування даних:

Більш складні сценарії резервного копіювання

Скрипт «sbackup» має досить обмежений функціонал і в ряді випадків його може виявитися недостатньо. Але, його завжди можна модифікувати підсвої потреби.

Найчастіше на серверах вже використовується якась система автоматизованих бекапів, деякі CMS або системи керування дозволяють створювати та налаштовувати архівування даних. Можна використовувати такі «готові» системи та «навчити» їх завантажувати архівні дані у хмарне сховище. Якщо в системі передбачено виконання зовнішніх скриптів після завершення архівування, то це можна використовувати для завантаження даних за допомогою утиліти «supload».

Використання «supload»

Supload (GitHub) — утиліта, спеціально створена для спрощення завантаження файлів у сховище Селектел. Вона написана на bash і використовує «стандартні» утиліти, які встановлені практично в будь-якій базовій Linux системі, тому достатньо скачати скрипт і він відразу працюватиме.

Можливості утиліти:

  • завантаження локального файлу у сховище;
  • рекурсивне завантаження всіх файлів у зазначеній папці та підпапках;
  • гарантія завантаження файлів за допомогою звіряння контрольних сум;
  • завантаження тільки нових і нових файлів;
  • налаштування авто-видалення файлів у сховищі.
Ще раз для встановлення:

Завантаження одного локального файлу "my.doc" у контейнер "files" сховища (контейнер повинен бути створений заздалегідь):

Так само можна завантажувати і в потрібну папку всередині контейнера:

При цьому перед завантаженням файлу обчислюється його контрольна сума (MD5) і завантаження вважається успішним тільки при збігу контрольних сум.

Для завантаження всіх файлів із певної папки потрібно використовувати опцію -r:

Для кожного файлу, що завантажується, так само буде виконано контроль за контрольною сумою.

Звіряння контрольних сум дає ще одну додаткову можливість - якщо запуститиутиліту повторно, тобто дані вже є у сховищі та контрольні суми збігаються, завантаження файлу пропускається. Це дозволяється завантажувати тільки нові файли, що змінилися.

Сховище підтримує автоматичне видалення файлів, "supload" дозволяє вказати скільки часу потрібно зберігати файл:

Опція -d вказує після якогось часу в хвилинах (m), годинниках (h) або днях (d) сховище автоматично виконає видалення файлу. Ця опція діє так само при рекурсивному завантаженні файлів. Якщо файл вже був завантажений, повторний запуск команди не змінює раніше встановлений (або взагалі не заданий) термін зберігання файлу.

Цю властивість можна цікаво використовувати — припустимо, ваша система архівування складає файли з бекапом в папку /var/backups/site/ і контролює видалення файлів через певний період часу. Можна налаштувати періодичний запуск "supload" для завантаження всіх файлів з обмеженням часу зберігання, наприклад:

Тоді кожен новий завантажений файл бекапу зберігатиметься в сховищі 31 день, а в раніше завантажених — поступово зменшаться термін їх зберігання і вони будуть автоматично видалені так само через 31 днів з моменту їх завантаження. Щоб така схема правильно працювала потрібно, щоб у вашої системи архівування термін видалення файлів був меншим, ніж зазначений у «supload», інакше старі файли можуть завантажитися заново.

Утиліта "supload" добре підходить як для ручного завантаження файлів, так і для використання у скриптах систем архівування. Єдине обмеження — максимальний розмір одного файлу, що завантажується, 5 Гб.

Завантаження великих файлів

Для завантаження файлів розміром більше 5 Гб у сховище потрібно використовувати спеціальний метод завантаження - завантаження сегментів. У такому разі файл розбивається навіртуальні частини та завантажується окремо. Завантаження такого файлу назад відбувається "прозоро" як одного цілого файлу, "склеювання" сегментів відбувається непомітно на стороні сховища.

Python-swiftclient — одна з утиліт, яка дозволяє завантажувати файли по сегментах. Виконати завантаження можна так:

При цьому файл буде «на льоту» розбитий на сегменти по 1 Гб і завантажений у сховище. Опція S вказує розмір одного сегмента в байтах, максимальний розмір сегмента 5 Гб (5368709120 байт).