Організація бекапов на різні акаунти Яндекс диска зі збереженням дампов бд і повідомленням поштою

Основні відмінності підходу даної статті від вищенаведеної:

1. Ми будемо працювати з іншим клієнтом Я диска.

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

3. Ми будемо повідомляти себе поштою про наших бекапіть.

4. Ми навчимося робити бекапи через день, і зберігати три останні копії.

Розглянутий у статті алгоритм працює на сервері Ubuntu 16.04.

Попередня підготовка: встановлюємо і налаштовуємо ssmtp для відправки листів з сервера

У мережі багато статей про організацію відправки пошти з сервера. Зазвичай пишуть про налаштування Postfix. Насправді, сьогодні, можна все зробити набагато простіше. Ми делегували домени на Яндекс, і тепер нехай він працює з нашою поштою по протоколу SMTP. Свій сервер вантажити не будемо.

Для установки ssmtp на наш сервер виконаємо команду:

Відредагуємо конфиг SSMTP:

І наведемо його до виду:

В директорії / root створимо файл rsync_email_orig, він нам стане в нагоді в подальшому. І наведемо його до виду, як нижче:

Копіюємо файл rsync_email_orig (його псувати не треба - це шаблон), і пробуємо відправити собі лист:

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

Але, взагалі настройка елементарна, проблем бути не повинно

Усе! Для наших завдань цього досить, більш детальну інформацію про налаштування SSMTP можна знайти в Інтернеті.

Попередня підготовка: налаштовуємо клієнт Я диска

Чому було обрано саме цей клієнт:

Для установки ydcmd, послідовно виконаємо команди:

Перевіримо, що все пройшло успішно:

І виглядати приблизно так:

Створимо другий конфиг, наприклад:

Також наведемо його до виду:

Перевіримо роботу клієнта Я диска:

Якщо все нормально, повинні отримати приблизно такий висновок:


Перевіримо роботу з іншим конфіг:

Створимо за допомогою ydcmd папки для бекапів на Я дисках

Більше про командах ydcmd можна дізнатися, запустивши його c параметром --help:

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

Організація бекапов на різні Я диски

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

Перелік кроків для організації резервних копій

1. В папці суперкористувача root створимо файл, наприклад user_list_all:

Наведемо його до виду:

Як ми бачимо user_list_all не що інше як csv файл, організований за принципом:
імя_сістемного_пользователя; домен; БД_для_дампа; імя_пользователя_БД; пароль_БД

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

Створимо другий файл, для окремого бекапа, наприклад:

І наведемо його до такого ж виду:

2. Створимо bash скрипт і виставимо йому права на виконання, наприклад:

Відкриємо файл для редагування:

Вставимо, ctrl + shift + v, код скрипта:

Відредагуємо під себе змінні:

Мінлива DIR - шлях до домашньої папці користувачів.
DIR_SITES - папка з сайтами користувача, вона повинна бути однаковою у всіх користувачів, наприклад: public_html.
EMAIL - ваш email на який має прийти лист.

Уважно вивчіть блок коду


І внесіть необхідні зміни під себе:

Вираз vet) говорить наступне: якщо $ USER дорівнює vet, встановити значення змінних:

- змінна FILE - назва файлу для читання виду:

- змінна cnf - файл конфіга ydcmd для користувача vet з токеном Я диска для цього користувача;

- змінна DIR_BACKUP - папка для бекапів для користувача vet;

Вираз *) встановлює значення за умовчанням, якщо жодне ім'я користувача не підійшло раніше.

Тобто в цьому блоці ви також повинні прописати своїх користувачів, їх файли для читання, конфіги для ydcmd, папки для зберігання резервних копій.

Також зверніть увагу на рядок:

3. Можна пробувати запускати скрипт для організації резервних копій rsync.sh.

Виберіть користувача у якого не багато даних для бекапа, для першого запуску скрипта, і запустіть скрипт, перебуваючи в папці / root з параметром user_name, наприклад:

vet - ім'я користувача, для якого ми будемо створювати бекап.

Якщо нічого не відбувається: в скрипті rsync.sh проводиться перевірка:

Спробуйте змінити 1 (непарний день поточного року) на 0 (парний день поточного року).

Те, що не звертаємо увагу.

В результаті роботи скрипта:

- В папці / root буде створена директорія для зберігання резервних копій backup_vet, з архівом виду: backup_your_site.ru_date_data.zip;

- Папка backup_vet буде сіхронізірована з папкою Я диска backup користувача vet;

- Вам прийде лист виду:

Налаштовуємо cron для запуску завдань за розкладом

Виконаємо команди (завдання в cron буде створено для суперкористувача root):

І впишемо самі команди, наприклад:

Де all і vet - це наші користувачі з своїми файлами csv, файлами конфігурації для клієнта Я диска, і своїми папками для бекапів.

Ці команди будуть запускатися кожен день о першій годині ночі і третій годині ночі. Скрипт /root/rsync.sh буде відпрацьовувати через день.

висновок

  • Бекапи зберігаються через день;
  • Зберігаються три останні версії архівів;
  • Зберігаються не тільки файли, але і дампи БД;
  • Ми отримуємо листи про успішність бекапов.
  • Встановлюємо, налаштовуємо і перевіряємо роботу SSMTP;
  • Встановлюємо та налаштовуємо клієнт Я диска ydcmd (отримуємо токени для наших клієнтів і створюємо конфіги);
  • Створюємо і редагуємо скрипт для організації бекапа rsync.sh, і csv файли користувачів;
  • Прописуємо завдання в cron.