Автоматизация резервного копирования – важная и неотъемлемая часть сетевого хранения данных. Лучше этот процесс доверить машине, потому что человек может, просто-напросто, забыть это сделать сам.
Для реализации автоматического задания нам понадобится две вещи: скрипт резервного копирования и задание для автоматического выполнения данного скрипта по заданному расписанию.
Итак, приступим. Так как я не люблю скрипты размещать в корне диска, как советуют на форумах, я всегда для всех скриптов делаю в корне папку scripts, куда в дальнейшем и размещаю все свои скрипты.
- Получаем права root
- Создадим папку для скриптов:
root@File-SRV:~# mkdir /scripts
- Теперь нам необходимо создать наш скрипт. Назовём его backup.save:
root@File-SRV:~# nano /scripts/backup.save
- Откроется редактор nano и мы впишем туда всего две строки:
#!/bin/bash
sudo zip -9 /backups/backup_`date +%d.%m.%Y`.zip -r /fileshare -x "readme.txt";
Хитрости, блохи и грабли: обратите внимание на то, что в имени файла у нас теперь присутствует интересная запись - `date +%d.%m.%Y`. Таким способом реализуется автоматическая генерация окончания имени файла с указанием даты. Ключи команды date:
%a – название дня недели сокращённо (Mon, Tue, Wed, Thu, Fri, Sat, Sun). Обратите внимание – в зависимости от языка системы, названия могут выводиться на других языках;
%A – название дня недели полностью;
%b – название месяца сокращённо, ту же информацию выведет последовательность %h;
%B – название месяца полностью;
%с – дата и время по местному времени;
%d – день месяца 01-31;
%D – дата в формате mm/dd/yy;
%e – день месяца 1-31 (без нулей в первых девяти числах месяца);
%H – часы 00-23;
%I – часы 00-12;
%j – день года по юлианскому календарю 001-36;
%k – часы 0-23 (без предшествующих нулей в первых десяти часах);
%l – часы 0-12 (без предшествующих нулей в первых десяти часах);
%m – номер месяца 01-12;
%M – минуты 00-59;
%n – символ новой страницы newline;
%p – локализованное время (AM -до полудня и PM - после полудня);
%r – время в 12-часовом формате hh:mm:ss[AM]PM;
%s – timestamp (количество секунд прошедшее с 00:00:00 1 января 1970 года UTC);
%S – секунд 00-59;
%t – горизонтальная табуляция;
%T – время в 24-часовом формате hh:mm:ss;
%U – номер недели в году, с воскресеньем в качестве первого дня недели 00-53;
%V – номер недели в году, с понедельником в качестве первого дня недели 01-52;
%w – день недели 0-6 где ноль является воскресеньем;
%W – номер недели в году, с понедельником в качестве первого дня недели 00-53;
%x – дата в формате mm/dd/yyyy;
%X – время в формате %H:%M:%S;
%y – две последние цифры года;
%Y – год в виде четырех цифр;
%Z – часовой пояс, если он установлен в системе;
%z – числовой стиль часового пояса в стандарте RFC-822.
Нам достаточно только день, месяц и год. При этом у нас будут уникальные имена архивов при каждом выполнении скрипта.
Небольшой ман по команде zip:
-9 – степень сжатия архива. Допустимые значения 0-9;
-r – архиватор zip будет рекурсивно перебирать все вложенные папки;
-x – исключение из архива файлов и папок по заданной маске.
- Сохраняем наш файл /scripts/backup.save. Но при этом, если его попытаться запустить, он не запустится, потому что его надо сделать исполняемым.
Для этого выполним команду:
@File-SRV:~# chmod a+x /scripts/backup.save
|