Основні відмінності підходу даної статті від вищенаведеної:
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.