6.3.7 Автоматичне резервне копіювання
Існує необхідність створювати резервну копію директорії згідно з графіком та зберігати її на зовнішньому сховищі?
Це можна просто виконати використовуючи KeepData у якості віддаленого хмарного сховища. Більш того, такий процес можна повністю автоматизувати.
Рішення відрізняється залежно від ОС, але загальний алгоритм полягає у запуску виконуваного файлу за розкладом. Давайте розберемо на прикладах.
Створення бекапів в Windows
У ОС Windows подібне реалізується за допомогою файлу у форматі .bat
і планувальника завдань Windows.
Розглянемо покрокову інструкцію:
1. Для коректного виконання майбутнього .bat
-файлу, нам знадобиться завантажити та встановити програму WinSCP. Зробити це можна на їх офіційному сайті. Виконувати будь-які дії у самій програмі при цьому не знадобиться.
2. Створіть новий текстовий файл у будь-якій зручній локації. Це буде наш новий скрипт для резервного копіювання.
3. Найважливіший крок - наповнення скрипта. Нижче наведено приклад з поясненнями. Виділені змінні необхідно заповнити Вашою інформацією:
@echo off
"C:\Program Files (x86)\WinSCP\WinSCP.exe" ^
/ini=nul ^
/command ^
"open ftp://login:password@server.keepdata.thehost.ua/" ^
"lcd C:\Folder\Work" ^
"cd /backups-work/" ^
"mkdir %%TIMESTAMP#yyyy-mm-dd%%" ^
"cd /backups-work/%%TIMESTAMP#yyyy-mm-dd%%" ^
"put File1" ^
"lcd C:\" ^
"put Folder2" ^
"lcd C:\Users\User" ^
"put File3" ^
"exit"
set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
echo Success
) else (
echo Error
)
exit /b %WINSCP_RESULT%
Тепер, до пояснень:
C:\Program Files (x86)\WinSCP\WinSCP.exe" ^
– вкажіть шлях до `.exe’ файлу WinSCP. У прикладі вказано шлях при стандартній установці."open ftp://login:password@server.keepdata.thehost.ua/" ^
– цей рядок виконує підключення до Вашого Хмарного сховища. Тут необхідно вказати логін, пароль та сервер підключення. Всі ці дані Ви можете дізнатися в Листі про відкриття послуги."lcd C:\Folder\Work" ^
– ця команда переходить виділеним шляхом на локальному ПК.cd /backups-work/" ^
– ця команда переходить по виділеному шляху на Вашому Хмарному сховищі."mkdir %% TIMESTAMP # yyyy-mm-dd%%" ^
– створює директорію в KeepData з назвою у форматірік-місяць-день
.cd /backups-work/%%TIMESTAMP#yyyy-mm-dd%%" ^
– переходить до вказаної директорії."put File1" ^
– завантажує в цю директорію файлFile1
з поточного розташування на локальному ПК (D:\Folder\Work
у цьому прикладі)."lcd C:\" ^
– переходить новим шляхом на локальному ПК.put Folder2" ^
– завантажує директоріюFolder2
та весь її зміст з нового шляху на Хмарне сховище."lcd C:\Users\User" ^
– переходить новим шляхом на локальному ПК.put File3" ^
– завантажує файлFile3
з нового шляху на Хмарне сховище.
Важливо: у Windows для поділу директорій використовується символ \
, у Linux ж - /
. Хмарне сховище збудовано саме на архітектурі Linux. Врахуйте це при редагуванні скрипту користувача
Таким чином, ми отримали скрипт, який підключається до KeepData, створює в зазначеній директорії нову папку і завантажує три файли з різних місць на локальному ПК. Створена папка матиме ім’я аналогічне часу її створення, що полегшить подальшу роботу з наявними резервними копіями. За потреби, вказаний скрипт можна відредагувати під Ваші потреби.
4. Зберігаємо наш текстовий файл у форматі .bat
. Для цього потрібно у файловому редакторі замість Зберегти натиснути Зберегти як. При збереженні вибираємо Всі файли і вказуємо повне ім’я файлу, разом із форматом .bat
наприкінці:
Тепер ми маємо написаний скрипт, який виконує резервне копіювання. Як цей процес автоматизувати? У цьому нам допоможе Планувальник задач Windows.
5. Відкриваємо Планувальник завдань за допомогою меню Пуск або альтернативним способом - натиснувши Win + R
та виконавши taskschd.msc
:
6. Правим кліком миші по Бібліотека планувальника завдань відкриваємо контектне меню та натискаємо Створити завдання:
7. Переходимо в підменю Тригери і натискаємо Створити. У відкритій формі вказуємо за яким розкладом необхідно виконувати завдання. Наприклад, щодня о 12:00:
8. Аналогічно переходимо в підменю Дії і знову натискаємо Створити. У відкритій формі вибираємо Запуск програми та вказуємо шлях до нашого скрипту, вручну або за допомогою кнопки Огляд:
Порада: у підменю Умови та Параметри можна додатково налаштувати Ваше завдання, наприклад, дозволити їй запускатися тільки при підключенні до певної мережі.
9. Завдання створено. Воно буде виконуватись згідно з вказаним розкладом. Вкрай бажано відразу ж протестувати його виконання за допомогою ручного запуску - клікнувши на завдання правою кнопкою миші і натиснувши Виконати. У разі, якщо тестове виконання закінчилося безуспішно - зверніться до нашої Служби підтримки надавши максимум інформації, включаючи текст Вашого скрипту.
Створення бекапів в Linux
У Linux процес аналогічний, з поправкою на інструментарій та залежності ОС. Також скриптів для виконання бекапу буде два – для безпосередньо файлів і для баз даних.
Залежністю до роботи виконуваного файлу створення бекапу в Linux є консольний FTP-клієнт LFTP.
Давайте розглянемо інструкцію з налаштування за допомогою покрокового прикладу:
1. Встановіть LFTP.
- Встановити в Ubuntu/Debian можна так:
- У CentOS/AlmaLinux/RockyLinux:
2. У Linux нам знадобиться два скрипти - для резервування певних директорій та для резервування певних баз даних. У нашому прикладі вони називаються backup-dir.sh
та backup-mysql.sh
, їх створені присвячені кроки 3 та 4 цієї інструкції. Якщо Вам необхідний лише один - створюйте лише один. Створення майбутніх виконуваних файлів у форматі .sh
у потрібній директорії виконується так:
3. Почнемо зі скрипта який резервує файли потрібної директорії, у цьому прикладі він зветься backup-dir.sh
. Відкриємо його будь-яким текстовим редаткором, наприклад, за допомогою nano backup-dir.sh
. Нижче наведено приклад скрипта з поясненнями. Виділені змінні необхідно заповнити Вашою інформацією:
Незважаючи на громіздкий вид скрипту, модифікувати в ньому потрібно зовсім небагато. А саме:
TMP_PATH="/tmp"
– встановлює тимчасову директорію для зберігання створеної резервної копії перед її завантаженням на віддалений сервер. Можна залишити стандартне значення/tmp
.BACKUP_DIRS="/home/user/data /home/user/data2 /home/user/data3"
– які саме директорії будуть резервуватися до архіву. Можна вказати одну.FTP_HOST="ftp://server.keepdata.thehost.ua"
– адреса Вашого Хмарного сховища.FTP_USER="ftp_user"
– FTP-користувач Вашого Хмарного сховища.FTP_PASS="ftp_password"
– пароль FTP-користувача Вашого Хмарного сховища.
Такий скрипт буде при запуску створювати архів у форматі .tgz
директорій зазначених у BACKUP_DIRS=
, зберігати їх у TMP_PATH=
локально і потім намагатися завантажити архів на віддалене FTP-сховище, в ньому створену директорію з назвою у вигляді поточної дати. У разі успішного виконання він видалить локальну копію архіву. Після редагування скрипта збережіть файл, обов’язково у форматі .sh
.
4. Тепер редагуємо скрипт для баз даних, у нас у прикладі це backup-mysql.sh
. Відкриємо його будь-яким текстовим редаткором, наприклад, за допомогою nano backup-mysql.sh
. Нижче наведено приклад скрипта з поясненнями. Виділені змінні необхідно заповнити Вашою інформацією:
Пояснення:
DATABASES='database1 database2 database3
– список баз даних, які зачіпатимуть завдання. Вказувати через пробіл.TMP_PATH="/tmp"
– встановлює тимчасову директорію для зберігання створеної резервної копії перед її завантаженням на віддалений сервер. Можна залишити стандартне значення/tmp
.BACKUP_USER="mysql_user"
– користувач для входу в MySQL.BACKUP_PASS="mysql_password"
– пароль вказаного користувача.FTP_HOST="ftp://server.keepdata.thehost.ua"
– адреса Вашого Хмарного сховища.FTP_USER="ftp_user"
– FTP-користувач Вашого Хмарного сховища.FTP_PASS="ftp_password"
– пароль FTP-користувача Вашого Хмарного сховища.
Такий скрипт буде при запуску створювати дампи баз даних DATABASES=
і стискати їх в архів у форматі .tgz
, зберігати його в TMP_PATH=
локально і потім намагатися завантажити його на віддалене FTP-сховище, в ньому створену директорію з назвою у вигляді поточної дати. У разі успішного виконання він видалить локальну копію архіву. Після редагування скрипта збережіть файл, обов’язково у форматі .sh
.
5. Надайте скриптам права на виконання:
Де /path/to/
замініть шляхами до створених скриптів.
6. Скрипти створені, залишилося автоматизувати їх виконання. Для цього ми використовуємо CRON-завдання.
Відкрийте файл crontab за допомогою команди:
Додайте нові завдання для виконання Ваших скриптів. Наприклад:
30 3 * * * /path/to/backup-dir.sh
30 3 * * * /path/to/backup-mysql.sh
Замініть /path/to/
шляхами до створених скриптів, після чого збережіть файл. Надані приклади виконуватимуться щодня о 3:30 ночі.
Порада: ознайомитися з можливостями CRON для налаштування завдань можна у відповідній інструкції.
7. Готово! Скрипти створені та відредаговані з Вашими даними, CRON-завдання на їх виконання вже чекає на потрібну дату. Радимо також виконати мануальний скрипт для тестування. Це можна зробити наступною командою:
Де /path/to/
замініть шляхом до скрипту. Якщо тест виявився успішним, значить, Вами все було налаштовано правильно. Якщо ж бажаного результату не було досягнуто – зверніться до нашої Служби підтримки надавши максимум інформації, включаючи вміст Ваших скриптів.