Данный скрипт написан на bash под управлением операционной системы семейства Linux. Он будет работать по следующему сценарию:
Рассмотрим полный цикл работ от написания скрипта, до подготовки системы к его запуску и настройки планировщика заданий.
Пример bash-скрипта
Подробное описание скрипта
Предварительная настройка системы
Монтирование сетевого каталога для размещения резервных копий
Настройка запуска скрипта по расписанию
Дополнительные материалы
Приступим.
Скрипт будет сравнивать файлы в рабочем каталоге и папке резервного копирования с помощью rsync. Это позволит нам сэкономить на времени выполнения задания. Долго будет выполняться только задание создания архива с помощью tar.
Создаем каталог для скриптов и сам скрипт:
mkdir /scripts
vi /scripts/samba_backup.sh
Задаем права скрипту на выполнение:
chmod +x /scripts/samba_backup.sh
Скрипт готов к работе.
Опишем значимые строки нашего скрипта:
1 | Указываем на путь к интерпретатору. |
2 | Задаем системные переменные, чтобы не пришлось в скрипте прописывать полные пути до исполняемых файлов. |
4 — 6 | Задаем переменные. |
4 | Каталог и рабочими данными, которые нужно резервировать. |
5 | Корневая папка, где нужно хранить резервные копии. |
6 | Дата, когда запускается скрипт. Используется для |
9 | Поиск и удаление всех архивов, которым более 370 дней. |
11 — 18 | Синхронизация данных с помощью rsync |
12 | Выполнение синхронизации данных в каталог daily. |
15 | Задаем условие. Номер дня недели должен равняться 0 (воскресенье). Если это так, то будет выполнена строка 17. |
17 | Выполнение синхронизации данных в каталог weekly. |
20 — 26 | Создание архива. |
21 | Получим количество файлов с архивами, которым меньше 30 дней и сохраним результат в переменную count_last_archives. |
22 | Проверяем условие, равна ли переменная count_last_archives нулю. На практике это значит, что за последние 30 дней у нас нет ни одного архива. Если это так, то выполняем строки 24 — 25. |
24 | Переходим внутрь каталога с рабочими данными. Это нужно для того, чтобы наш архив создавался относительно не корня, а рабочего каталога. Так удобнее при восстановлении данных. |
25 | С помощью утилиты tar мы архивируем все данные и создаем архив в каталоге archive. В название архива добавляем дату его создания. |
Создаем каталоги, в которых будут храниться резервные копии:
mkdir -p /backup/{daily,weekly,archive}
В нашем примере, это три каталога, относительно, папки /backup:
Наша система готова к созданию резервных копий.
Резервные копии необходимо создавать на удаленном компьютере или внешнем диске, чтобы они были доступны при выходе из строя сервера. Предположим, у нас используется общая папка на удаленном сервере, в которой будут размещаться файлы с backup.
Чтобы упростить процесс монтирования сетевой папки, откроем на редактирование следующий файл:
vi /etc/fstab
и добавим в него строчку:
//192.168.0.1/backup /mnt cifs user,rw,noauto,credentials=/root/.smbclient 0 0
* в данном примере выполняется монтирование общей папки backup на сервере с IP-адресом 192.168.0.1 в каталог /mnt . В качестве сетевой файловой системы используется cifs (протокол SMB: сервер samba или общая папка Windows). Параметры для подключения — user : позволяет выполнить монтирование любому пользователю, rw : с правом на чтение и запись, noauto : не монтировать автоматически при старте системы, credentials : файл, в котором написаны логин и пароль для подключения к общей папке.
Теперь создадим файл с логином и паролем:
vi /root/.smbclient
и приведем его к следующему виду:
username=backup
password=backup
* где username : имя пользователя, password : пароль. Само собой, в вашем случае указываются свои данные.
Устанавливаем пакет cifs-utils, позволяющий в Linux монтировать smb-шары. В зависимости от типа Linux, команды будут немного различаться.
а) Deb (Ubuntu / Debian, Astra Linux):
apt install cifs-utils
б) RPM (Rocky Linux / РЕД ОС / CentOS):
yum install cifs-utils
Теперь введите следующую команду:
mount /mnt
Должна примонтировать сетевая папка //192.168.0.1/backup. Это можно проверить следующей командой:
mount
Подробнее про монтирование сетевых папок читайте в инструкции Как в Linux монтировать шару CIFS .
Для запуска нашего скрипта по расписанию , создадим правило в планировщике cron. Выполняем команду:
crontab -e
И добавляем строку:
0 3 * * * /scripts/samba_backup.sh
* в данном примере мы будем запускать резервирование каждый день в 3 часа ночи.
Также может быть полезным:
1. Настройка и использование сервера Bareos на Rocky Linux .
2. Резервное копирование PostgreSQL .
3. Работа с резервными копиями в Битрикс24 .
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…