Blog — by Andrii Dykhlin

Найпростіший бекап за кілька хвилин

Вітаю. Цим уроком ми побачимо методи створення резервних копій важливих файлів нашої системи. Звичайно, для всього цього можна використовувати окремий софт та хмарні середовища, проте цим уроком хотілося б показати як можна зберегти себе від "ой, я випадково видалив/видалила файл, що ж тепер робити?". Для цього нам потрібно буде створити невеликий скрипт та додати його до планувальника.

Сам скрипт має такий вигляд:

Код:

#!/bin/bash

file=~/Tools/Backup/important_$(date "+%Y%m%d").tar.gz
cd /home/makhauser/Важливе && tar -zcf $file *

Збережемо його, наприклад, під назвою backup.sh.

Перший рядок показує, що це скрипт bash. Після створення скрипту потрібно буде надати йому право запуску користувачами:

Код:

$ chmod +x backup.sh

Другий рядок задає зміну file, він не є обов'язковим, проте для виразності коду можна задати. Тут ми задаємо кінцеву назву файлу, де .tar.gz - формат архіву. Важливо також зазначити, що "~" вказує на домашню теку користувача для того, щоб скрипт перейшов туди, а не намагався піти по дереву каталогів з точки запуску (якщо він лежить

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

Код:

#!/bin/bash

file=~/Tools/Backup/watch_$(date "+%Y%m%d").tar.gz
cd /home/makhauser/ && tar -zcf $file watch

Вживання cd допоможе уникнути потрапляння тек /home/ та інших в архів - там будуть лише файли.


Після того, як ми створили файли, ми можемо їх зберегти. Мої знаходяться у теці ~/Tools/Scripts. Відкриваємо консоль та прописуємо:

Код:

$ crontab -e

Відкриється cron - планувальник задач. Під час першого запуску він запропонує обрати один з присутніх в системі редакторів файлів. Для базового редагування достатньо й nano.

В кінці файлу необхідно створити правило для запуску скриптів. Можна прописувати й sh в правилі, проте коли файл явно вказує як він працює та є виконуваним - це вже не є необхідним.

мої правила виглядають так:

Код:

0 4 * * * ~/Tools/Scripts/watch.sh

0 4 * * 1 ~/Tools/Scripts/imp.sh

Давайте розберемо ці числа окремо. Планування в cron працює за наступною схемою: m h dom mon dow. m - хвилини, h - години, dom - день місяця, mon - місяць, dow - день тижня. Все можна задавати числами, однак дні тижня та назви місяців допускають форму запису з трьох літер (наприклад, Wed (Середа), Sep (вересень). Якщо задавати числами, то необхідно пам'ятати, що за неділю відповідають 0 та 7. Зірки відповідають за опцію "усі можливі значення"

В моєму випадку перший скрипт запускається о 4 годині щодня, другий - о 4 годині першого дня тижня (понеділок). Але слід розуміти, що crontab також має спеціальне форматування. Групу чисел ми можемо замінити одним словом:

Код:

@reboot        Запускати на старті

@yearly        Еквівалент 0 0 1 1 *
@annually      Еквівалент 0 0 1 1 *
@monthly       Еквівалент 0 0 1 * *
@weekly        Еквівалент 0 0 * * 0
@daily         Еквівалент 0 0 * * *
@midnight      Еквівалент 0 0 * * *
@hourly        Еквівалент 0 * * * *

Якщо потрібно запускати скрипти від імені суперкористувача:

Код:

$ sudo crontab -e
.

Записати у файл в нано: Ctrl+O або F3

Вийти з nano: Ctrl+X або F2

Щоб відобразити усі активні команди cron потрібно виконати команду:

Код:

$ crontab -l

Звичайно, це доволі тривіальний варіант для "бекапів", проте у якийсь момент він може допомогти. Звичайно, можна підключатися по ssh до якогось ресурсу та копіювати туди або користуватися якимось програмним продуктом, створеним виключно дня цього, але цим уроком ми глянули на базис скриптів та планування задач в GNU/Linux.




Прокоментуйте!