мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| scripts:createclientsbareossrv [2024/09/19 13:07] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | scripts:createclientsbareossrv [2024/09/19 14:10] (текущий) – Администратор | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Создание всех настроек для клиента Bareos на стороне Director ====== | ||
| + | Подробно о Bareos [[manuals: | ||
| + | |||
| + | < | ||
| + | # Запрос имени клиента, | ||
| + | read -p " | ||
| + | read -p " | ||
| + | read -p " | ||
| + | read -s -p " | ||
| + | echo | ||
| + | # Формирование имени без суффикса " | ||
| + | client_base_name=" | ||
| + | # Отдельные переменные для пулов и storage | ||
| + | storage_name=" | ||
| + | device_name=" | ||
| + | pool_name=" | ||
| + | full_pool_name=" | ||
| + | differential_pool_name=" | ||
| + | # Создание клиента в конфигурационном файле | ||
| + | client_config_file="/ | ||
| + | cat <<EOL > " | ||
| + | Client { | ||
| + | Name = " | ||
| + | Address = " | ||
| + | Password = " | ||
| + | } | ||
| + | EOL | ||
| + | # Проверка успешности создания файла клиента | ||
| + | if [ $? -ne 0 ]; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | echo " | ||
| + | # Создание файла <Имя клиента> | ||
| + | jobdefs_file="/ | ||
| + | cat <<EOL > " | ||
| + | JobDefs { | ||
| + | Name = " | ||
| + | Type = Backup | ||
| + | Level = Incremental | ||
| + | Client = " | ||
| + | FileSet = " | ||
| + | Schedule = " | ||
| + | Storage = ${storage_name} | ||
| + | Messages = Standard | ||
| + | Pool = ${pool_name} | ||
| + | Priority = 10 | ||
| + | Write Bootstrap = "/ | ||
| + | Full Backup Pool = $full_pool_name # write Full Backups into " | ||
| + | Differential Backup Pool = $differential_pool_name # write Diff Backups into " | ||
| + | Incremental Backup Pool = $pool_name # write Incr Backups into " | ||
| + | Backup Format = " | ||
| + | } | ||
| + | EOL | ||
| + | # Создание файла backup-< | ||
| + | backup_file="/ | ||
| + | cat <<EOL > " | ||
| + | Job { | ||
| + | Name = " | ||
| + | JobDefs = " | ||
| + | Client = " | ||
| + | } | ||
| + | EOL | ||
| + | # Создание пулов в каталоге / | ||
| + | pool_files=(" | ||
| + | for pool in " | ||
| + | pool_file="/ | ||
| + | if [[ $pool == I_* ]]; then | ||
| + | pool_type=" | ||
| + | label_format=" | ||
| + | retention=" | ||
| + | volume_bytes=" | ||
| + | elif [[ $pool == D_* ]]; then | ||
| + | pool_type=" | ||
| + | label_format=" | ||
| + | retention=" | ||
| + | volume_bytes=" | ||
| + | elif [[ $pool == F_* ]]; then | ||
| + | pool_type=" | ||
| + | label_format=" | ||
| + | retention=" | ||
| + | volume_bytes=" | ||
| + | fi | ||
| + | cat <<EOL > " | ||
| + | Pool { | ||
| + | Name = " | ||
| + | Pool Type = Backup | ||
| + | Recycle = yes # Bareos может автоматически перерабатывать тома | ||
| + | AutoPrune = yes # Удалять тома с истекшим сроком действия | ||
| + | Volume Retention = $retention # Как долго следует хранить резервные копии ${pool_type} ? | ||
| + | Maximum Volume Bytes = $volume_bytes # Ограничить размер тома до разумного уровня | ||
| + | Maximum Volumes = 100 # Ограничить количество томов в пуле | ||
| + | Label Format = " | ||
| + | } | ||
| + | EOL | ||
| + | done | ||
| + | # Создание Storage в каталоге / | ||
| + | storage_file="/ | ||
| + | cat <<EOL > " | ||
| + | Storage { | ||
| + | Name = " | ||
| + | Address = " | ||
| + | Password = " | ||
| + | Device = " | ||
| + | Media Type = " | ||
| + | } | ||
| + | EOL | ||
| + | # Создание Device в каталоге / | ||
| + | device_file="/ | ||
| + | archive_device="/ | ||
| + | # Проверка существования директории | ||
| + | if [ ! -d " | ||
| + | echo " | ||
| + | sudo mkdir -p " | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | cat <<EOL > " | ||
| + | Device { | ||
| + | Name = " | ||
| + | Media Type = " | ||
| + | Archive Device = " | ||
| + | LabelMedia = yes; # позволяет Bareos помечать немаркированные носители | ||
| + | Random Access = yes; | ||
| + | AutomaticMount = yes; # когда устройство будет открыто, | ||
| + | RemovableMedia = no; | ||
| + | AlwaysOpen = no; | ||
| + | Description = " | ||
| + | } | ||
| + | EOL | ||
| + | # Проверка успешности создания файлов storage и device | ||
| + | if [ $? -ne 0 ]; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | echo " | ||
| + | # Изменение владельца файлов | ||
| + | # Каталог, | ||
| + | target_dir="/ | ||
| + | # Проверка существования каталога | ||
| + | if [ ! -d " | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | # Поиск и изменение владельца, | ||
| + | for file in " | ||
| + | if [ -e " | ||
| + | # Получаем текущих владельца и группу | ||
| + | owner=$(stat -c ' | ||
| + | group=$(stat -c ' | ||
| + | # Проверка, | ||
| + | if [ " | ||
| + | echo " | ||
| + | sudo chown bareos: | ||
| + | sudo chmod 750 " | ||
| + | fi | ||
| + | fi | ||
| + | done | ||
| + | echo " | ||
| + | # Автомонтирование папок | ||
| + | # Формирование строки для fstab | ||
| + | remote_path="// | ||
| + | local_path="/ | ||
| + | options=" | ||
| + | # Обработка пробелов только в первой части | ||
| + | remote_path_escaped=$(echo " | ||
| + | # Формирование окончательной строки для fstab | ||
| + | mount_entry=" | ||
| + | # Проверка, | ||
| + | if grep -q -F " | ||
| + | echo " | ||
| + | else | ||
| + | # Добавление строки в /etc/fstab | ||
| + | echo " | ||
| + | # Проверка успешности добавления | ||
| + | if [ $? -eq 0 ]; then | ||
| + | echo " | ||
| + | # Перезапуск fstab и монтирование всех файловых систем | ||
| + | echo " | ||
| + | sudo mount -a | ||
| + | # Проверка успешности монтирования | ||
| + | if [ $? -eq 0 ]; then | ||
| + | echo " | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | fi | ||
| + | # Вывод информации о завершении | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | for pool in " | ||
| + | echo " - / | ||
| + | done | ||
| + | echo " | ||
| + | echo " | ||
| + | # Сервисы для перезагрузки | ||
| + | services=(" | ||
| + | # Перезагрузка сервисов | ||
| + | for service in " | ||
| + | echo " | ||
| + | sudo systemctl restart " | ||
| + | # Проверка успешности перезагрузки | ||
| + | if [ $? -eq 0 ]; then | ||
| + | echo " | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | done | ||
| + | echo "" | ||
| + | # Вывод статусов сервисов | ||
| + | for service in " | ||
| + | echo " | ||
| + | sudo systemctl status " | ||
| + | echo "" | ||
| + | done | ||
| + | # Конец скрипта | ||
| + | </ | ||
| + | |||
| + | {{tag> | ||