мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
manuals:bareoslto [2024/09/12 13:11] Администраторmanuals:bareoslto [2024/09/25 07:49] (текущий) Администратор
Строка 1: Строка 1:
 ====== Свой сервер бэкапирования bareos с возможностью писать на ленточное хранилище ====== ====== Свой сервер бэкапирования bareos с возможностью писать на ленточное хранилище ======
-У нас в компании имеется ленточное хранилище, которое, к сожалению, не используется и не приносит никакой пользы. +У нас в компании имеется ленточное хранилище, которое, к сожалению, не используется и не приносит никакой пользы.\\ 
-Я планирую настроить сервер резервного копирования на базе Bareos (Bacula) и организовать хранение архивной информации на ленточных носителях. + 
-В нашей инфраструктуре используются дисковые полки Infortrend и ленточная библиотека Quantum Scalar i40. +Я планирую настроить сервер резервного копирования на базе Bareos (Bacula) и организовать хранение архивной информации на ленточных носителях.\\ 
-Физический сервер будет на CentOS Stream release 9 он оснащён двумя процессорами Intel Xeon E5-2609 v3 с тактовой частотой 1.90 ГГц и 64 ГБ оперативной памяти и два сетевых адаптера для подключения к разным сетям. Также предусмотрен адаптер Fiber Channel для связи с дисковыми полками и ленточным хранилищем. + 
-У меня весь процесс начинается с перенастройки Qlogic, что бы нужные WWPN смотрели в нужные устройства. Подробностей по настройке Qlogic давать не буду т.к. это тема для отдельной статьи с подробными разъяснениями.+В нашей инфраструктуре используются дисковые полки Infortrend и ленточная библиотека Quantum Scalar i40.\\ 
 + 
 +Физический сервер будет на CentOS Stream release 9 он оснащён двумя процессорами Intel Xeon E5-2609 v3 с тактовой частотой 1.90 ГГц и 64 ГБ оперативной памяти и два сетевых адаптера для подключения к разным сетям.\\ 
 + 
 +Также предусмотрен адаптер Fiber Channel для связи с дисковыми полками и ленточным хранилищем.\\ 
 + 
 +У меня весь процесс начинается с перенастройки Qlogic, что бы нужные WWPN смотрели в нужные устройства. Подробностей по настройке Qlogic давать не буду т.к. это тема для отдельной статьи с подробными разъяснениями.\\
  
 ===== Приступаем к установке ===== ===== Приступаем к установке =====
Строка 77: Строка 83:
 <code>systemctl restart bareos-dir bareos-fd bareos-sd</code> <code>systemctl restart bareos-dir bareos-fd bareos-sd</code>
  
-<note>Идем проверять веб интерфейс по адресу **http:\//\//Ваш IP\//bareos-webui**</note>+<note>Идем проверять веб интерфейс по адресу **Ваш IP\bareos-webui**</note>
  
 === Далее ставим дополнительно компоненты для работы с лентами === === Далее ставим дополнительно компоненты для работы с лентами ===
 <code>dnf install bareos-storage-tape mt-st mtx</code> <code>dnf install bareos-storage-tape mt-st mtx</code>
 +Проверить в наличие ленточных устройств можно несколькими командами
 +<code>ls /dev/tape/by-id/</code>
 +<code>lsscsi</code>
 +В моем случае это Quantum с двумя драйвами и авточейнджером
 +=== Создаем файл хранения. ===
 +<code>nano /etc/bareos/bareos-dir.d/storage/Tape.conf</code>
 +С вот таким содержимым
 +<code>Storage {
 +
 +Name = Tape
 +
 +Address = bacularestore
 +
 +Password = "ВАШ СЛОЖНЫЙ ПАРОЛЬ"
 +
 +Device = autochanger-0
 +
 +Media Type = LTO
 +
 +Auto Changer = yes
 +
 +}</code>
 +**Где:**
 +
 +  * Name – Имя любое, но лучше использовать Tape что бы было понятно что это ленточное хранилище
 +  * Address – имя вашего сервера, на котором установлен и настроен bareos
 +  * Password – очень сложный пароль для связи устройства с директором. Пароль должен совпадать с паролем из файла /etc/bareos/bareos-sd.d/director/bareos-dir.conf
 +  * Device – Название вашего файла с настройками авточейнджера (робота, который кассеты перекладывает)
 +  * Media Type – Указывается LTO что бы система понимала что это ленты
 +  * Auto Changer – указываем использовать ваш авточейнджер или нет.
 +=== Создаем файл авточейнджера ===
 +<code>nano /etc/bareos/bareos-sd.d/autochanger/autochanger-0.conf</code>
 +С вот таким содержимым
 +<code>Autochanger {
 +
 +Name = "autochanger-0"
 +
 +Changer Device = /dev/tape/by-id/scsi-QUANTUMD0H0112431_LLA
 +
 +Device = ULTRIUM-HH6-0
 +
 +Device = ULTRIUM-HH6-1
 +
 +Changer Command = "/usr/lib/bareos/scripts/mtx-changer %c %o %S %a %d"
 +
 +}</code>
 +**Где:**
 +
 +  * Name – должен совпадать со строкой Device из файла /etc/bareos/bareos-dir.d/storage/Tape.conf
 +  * Changer Device – Путь к вашему авточейнджеру, тут может быть вариант как у меня, либо подобный вариант /dev/sg37 где sg будет отражать номер вашего устройства
 +  * Device – это названия ваших драйвов, их может быть два как у меня или один в вашем случае. Эти названия должны совпадать с именем из файла /etc/bareos/bareos-sd.d/device/tapedrive-0.conf
 +  * Changer Comand – путь к скрипту, который будет управлять вашим ленточным хранилищем
 +=== Теперь создаем файл устройства ===
 +<code>nano /etc/bareos/bareos-sd.d/device/tapedrive-0.conf</code>
 +С вот таким содержимым
 +<code>Device {
 +
 +Name = "ULTRIUM-HH6-0"
 +
 +Media Type = "LTO"
 +
 +ArchiveDevice = /dev/tape/by-id/scsi-C38DE40000-nst
 +
 +LabelMedia = yes
 +
 +Autochanger = yes
 +
 +AlwaysOpen = yes
 +
 +AutomaticMount = yes
 +
 +RemovableMedia = yes
 +
 +DeviceType = "Tape"
 +
 +}
 +
 +Device {
 +
 +Name = "ULTRIUM-HH6-1"
 +
 +Media Type = "LTO"
 +
 +ArchiveDevice = /dev/tape/by-id/scsi-C38DE40004-nst
 +
 +LabelMedia = yes
 +
 +Autochanger = yes
 +
 +AlwaysOpen = yes
 +
 +AutomaticMount = yes
 +
 +RemovableMedia = yes
 +
 +DeviceType = "Tape"
 +
 +}</code>
 +**Где:**
 +
 +  * Name – имя устройства, которое должно совпадать с Device из файла /etc/bareos/bareos-sd.d/autochanger/autochanger-0.conf
 +  * ArchiveDevice – Путь к вашему драйву, тут может быть вариант как у меня, либо подобный вариант /dev/sg36 где sg будет отражать номер вашего устройства
 +После этих настроек у вас уже будет отображаться ленточное хранилище и управление им как через веб интерфейс
 +
 +{{:manuals:picture_1_.png?nolink&800|}}
 +
 +так и через bconsole командой
 +<code>list storages</code>
 +Теперь в bconsole командой
 +<code>Status slots</code>
 +Мы можем видеть сколько у нас слотов в ленточном хранилище и какие заняты и свободны
 +
 +{{:manuals:picture_2_.png?nolink&800|}}
 +
 +==== Теперь нужно настроить задания для того что бы на ленту попадали файлы. ====
 +Для этого начнем с создания файла в котором будет информация откуда забирать данные для копирования их на ленту
 +<code>nano /etc/bareos/bareos-dir.d/fileset/OnTape.conf</code>
 +Содержимое файла
 +<code>FileSet {
 +
 +Name = "OnTape"
 +
 +Include {
 +
 +Options {
 +
 +Compression=GZIP
 +
 +}
 +
 +# File = "/mnt/backup/Bareos/Конфиги сервера и базы данных/"
 +
 +}
 +
 +}</code>
 +Как видно тут указан способ сжатия и путь откуда берем данные (У меня он закомментирован т.к. был тестовый вариант и пока не использую его), ничего сложного
 +=== Теперь нужно создать пул для ленты ===
 +Для этого создаем файл
 +<code>nano /etc/bareos/bareos-dir.d/pool/LTO.conf</code>
 +Содержимое файла
 +<code>Pool {
 +
 +Name = "LTO_Pool"
 +
 +Pool Type = Archive
 +
 +Storage = Tape
 +
 +LabelFormat = "<Barcode>"
 +
 +Maximum Volumes = 500
 +
 +# VolumeRetention = 365 days
 +
 +AutoPrune = no
 +
 +}
 +
 +Pool {
 +
 +Name = "LTO_Pool_OLD"
 +
 +Pool Type = Archive
 +
 +Storage = Tape
 +
 +LabelFormat = "<Barcode>"
 +
 +Maximum Volumes = 500
 +
 +# VolumeRetention = 365 days
 +
 +AutoPrune = no
 +
 +}</code>
 +**Где:**
 +  * Name – любое имя удобное для вашего восприятия
 +  * Storage – имя ранее созданного файла /etc/bareos/bareos-dir.d/storage/Tape.conf
 +  * LabelFormat – У меня указан баркод это значит что будут считываться штрихкоды с кассет, если у вас иначе все, то можно оставить LTO- и будет присваиваться номер по порядку
 +=== Теперь создаем файл отвечающий за само задание ===
 +<code>nano /etc/bareos/bareos-dir.d/job/BackupOnTape.conf</code>
 +Содержимое файла
 +<code>Job {
 +
 +Name = "BackupOnTape"
 +
 +Type = Backup
 +
 +FileSet="OnTape"
 +
 +Schedule="LTO_Migration"
 +
 +Storage="Tape"
 +
 +Pool="LTO_Pool"
 +
 +Messages = Standard
 +
 +Priority=10
 +
 +Client = "bareos-fd"
 +
 +Write Bootstrap = "/tmp/bareos.bsr"
 +
 +Backup Format = "Tar"
 +
 +}</code>
 +**Где:**
 +  * Name – любое имя, которое вам будет удобно
 +  * FileSet – имя ранее созданного файла /etc/bareos/bareos-dir.d/fileset/OnTape.conf
 +  * Storage – имя ранее созданного файла /etc/bareos/bareos-dir.d/storage/Tape.conf
 +  * Pool – имя из файла /etc/bareos/bareos-dir.d/pool/LTO.conf
 +  * Client – имя вашего клиента взятое из каталога /etc/bareos/bareos-dir.d/client/ т.к. в этом каталоге создаются конфиги клиентов
 +После всех манипуляций нужно перезагрузить сервисы и проверить их статус работы
 +<code>systemctl restart bareos-dir bareos-fd bareos-sd</code>
 +<code>systemctl status bareos-dir bareos-fd bareos-sd</code>
 +<note>Если ошибок не появилось, то вы все сделали верно и уже можете выполнять копирование на ленту в ручном режиме через созданное задание, а если вам необходимо выполнять копирование с помощью планировщика, то нужно будет еще создать отдельные конфиги или отредактировать существующие по пути /etc/bareos/bareos-dir.d/schedule/WeeklyCycle.conf</note>
 +==== Дополнения по улучшению (на ваше усмотрение) ====
 +Создаем пароль для пользователя, который работает с базой данных
 +Заходим в базу
 +<code>sudo -u postgres psql</code>
 +Меняем пароль для пользователя bareos т.к. по умолчанию он без пароля
 +<code>ALTER USER bareos WITH PASSWORD 'ВАШ ПАРОЛЬ’;</code>
 +Выходим из базы
 +<code>\q</code>
 +Теперь заносим этот пароль в файл
 +<code>/etc/bareos/bareos-dir.d/catalog/MyCatalog.conf</code>
 +Еще необходимо изменить тип аутентификации в файле
 +<code>nano /var/lib/pgsql/data/pg_hba.conf</code>
 +Вносим изменения таким образом. Тут выставлен md5 вместо ident и peer
 +<code>local all all md5
 +host all all 127.0.0.1/32 md5
 +host all all ::1/128 md5</code>
 +И перезагружаем сервисы bareos и postgresql, после этого обязательно проверяем статус что бы все было в порядке
 +<code>systemctl restart bareos-dir bareos-fd bareos-sd postgresql</code>
 +<code>systemctl status bareos-dir bareos-fd bareos-sd postgresql</code>
 +===== Установка клиентов и настройка клиентов на сервере =====
 +Установка клиентов — процесс несложный, но если делать всё руками, то можно очень долго просидеть, создавая нужные конфиги и прописывая в них данные. Поэтому я разработал два скрипта на bash, которые выполнят всё за вас.
 +  - Первый скрипт запускаете на сервере, где у вас установлен директор.
 +  - Второй скрипт запускаете на самом клиенте.
 +Клиентский скрипт сделан таким образом, что система понимает вашу версию Ubuntu и Centos и ничего лишнего не скачает и не установит. Само собой, скрипты я разрабатывал под свои нужды, если вам что-то нужно исправить в них, то вы можете свободно это делать, поэтому обязательно прочитайте, что там написано, прежде чем выполнять их.
 +
 +==== Содержимое серверного скрипта ====
 +<code>#!/bin/bash
 +# Запрос имени клиента, каталога, адреса и пароля
 +read -p "Введите название каталога для монтирования расположенного в //10.0.5.4/backup (например, 'Grafana_Loki'): " mount_name
 +read -p "Введите имя клиента (например, dokuwiki): " client_name
 +read -p "Введите адрес клиента (например, 10.0.0.115): " client_address
 +read -s -p "Введите сложный пароль клиента не менее 30 символов: " client_password
 +echo
 +# Формирование имени без суффикса "-fd"
 +client_base_name="${client_name%-fd}"
 +# Отдельные переменные для пулов и storage
 +storage_name="$client_base_name" # Имя storage будет такое же как и имя клиента без -fd
 +device_name="${client_base_name}Storage" # Имя устройства
 +pool_name="I_${client_name}"
 +full_pool_name="F_${client_name}"
 +differential_pool_name="D_${client_name}"
 +# Создание клиента в конфигурационном файле
 +client_config_file="/etc/bareos/bareos-dir.d/client/${client_name}-fd.conf"
 +cat <<EOL > "$client_config_file"
 +Client {
 +Name = "${client_name}-fd"
 +Address = "${client_address}"
 +Password = "${client_password}"
 +}
 +EOL
 +# Проверка успешности создания файла клиента
 +if [ $? -ne 0 ]; then
 +echo "Ошибка при создании конфигурационного файла клиента."
 +exit 1
 +fi
 +echo "Клиент ${client_name}-fd успешно добавлен в конфигурацию."
 +# Создание файла <Имя клиента>Default.conf в каталоге /etc/bareos/bareos-dir.d/jobdefs/
 +jobdefs_file="/etc/bareos/bareos-dir.d/jobdefs/${client_name}Default.conf"
 +cat <<EOL > "$jobdefs_file"
 +JobDefs {
 +Name = "${client_name}Default"
 +Type = Backup
 +Level = Incremental
 +Client = "${client_name}-fd"
 +FileSet = "LinuxAll" # ${client_name} fileset
 +Schedule = "WeeklyCycle"
 +Storage = ${storage_name}
 +Messages = Standard
 +Pool = ${pool_name}
 +Priority = 10
 +Write Bootstrap = "/var/lib/bareos/%c.bsr"
 +Full Backup Pool = $full_pool_name # write Full Backups into "Full" Pool
 +Differential Backup Pool = $differential_pool_name # write Diff Backups into "Differential" Pool
 +Incremental Backup Pool = $pool_name # write Incr Backups into "Incremental" Pool
 +Backup Format = "Tar"
 +}
 +EOL
 +# Создание файла backup-<Имя клиента>.conf в каталоге /etc/bareos/bareos-dir.d/job/
 +backup_file="/etc/bareos/bareos-dir.d/job/backup-${client_name}-fd.conf"
 +cat <<EOL > "$backup_file"
 +Job {
 +Name = "backup-${client_name}-fd"
 +JobDefs = "${client_name}Default"
 +Client = "${client_name}-fd"
 +}
 +EOL
 +# Создание пулов в каталоге /etc/bareos/bareos-dir.d/pool/
 +pool_files=("$pool_name" "$full_pool_name" "$differential_pool_name")
 +for pool in "${pool_files[@]}"; do
 +pool_file="/etc/bareos/bareos-dir.d/pool/${pool}.conf"
 +if [[ $pool == I_* ]]; then
 +pool_type="Incremental"
 +label_format="I_${client_name}-"
 +retention="30 days"
 +volume_bytes="1G"
 +elif [[ $pool == D_* ]]; then
 +pool_type="Differential"
 +label_format="D_${client_name}-"
 +retention="90 days"
 +volume_bytes="10G"
 +elif [[ $pool == F_* ]]; then
 +pool_type="Full"
 +label_format="F_${client_name}-"
 +retention="365 days"
 +volume_bytes="50G"
 +fi
 +cat <<EOL > "$pool_file"
 +Pool {
 +Name = "${pool}"
 +Pool Type = Backup
 +Recycle = yes # Bareos может автоматически перерабатывать тома
 +AutoPrune = yes # Удалять тома с истекшим сроком действия
 +Volume Retention = $retention # Как долго следует хранить резервные копии ${pool_type} ?
 +Maximum Volume Bytes = $volume_bytes # Ограничить размер тома до разумного уровня
 +Maximum Volumes = 100 # Ограничить количество томов в пуле
 +Label Format = "$label_format" # Тома будут помечены как "${pool_type}-<volume-id>"
 +}
 +EOL
 +done
 +# Создание Storage в каталоге /etc/bareos/bareos-dir.d/storage/
 +storage_file="/etc/bareos/bareos-dir.d/storage/${storage_name}.conf"
 +cat <<EOL > "$storage_file"
 +Storage {
 +Name = "${storage_name}"
 +Address = "ВАШ hostname" # Адрес хранилища замените на ваш (по сути это hostname где у вас установлен bareos-dir)
 +Password = "ВАШ СЛОЖНЫЙ ПАРОЛЬ 30 и более символов" # Замените на ваш пароль
 +Device = "${device_name}"
 +Media Type = "File"
 +}
 +EOL
 +# Создание Device в каталоге /etc/bareos/bareos-sd.d/device/
 +device_file="/etc/bareos/bareos-sd.d/device/${device_name}.conf"
 +archive_device="/mnt/backup/${client_base_name}" # Путь к хранилищу, имя клиента без суффикса "-fd"
 +# Проверка существования директории
 +if [ ! -d "$archive_device" ]; then
 +echo "Директория $archive_device не существует. Создание..."
 +sudo mkdir -p "$archive_device" # Создание директории, если она не существует
 +else
 +echo "Директория $archive_device уже существует."
 +fi
 +cat <<EOL > "$device_file"
 +Device {
 +Name = "${device_name}"
 +Media Type = "File"
 +Archive Device = "${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="/etc/bareos/bareos-dir.d/pool/"
 +# Проверка существования каталога
 +if [ ! -d "$target_dir" ]; then
 +echo "Каталог $target_dir не существует."
 +exit 1
 +fi
 +# Поиск и изменение владельца, группы и прав на файлы
 +for file in "$target_dir"*; do
 +if [ -e "$file" ]; then # Проверка, существует ли файл
 +# Получаем текущих владельца и группу
 +owner=$(stat -c '%U' "$file")
 +group=$(stat -c '%G' "$file")
 +# Проверка, является ли владелец и группа root
 +if [ "$owner" == "root" ] && [ "$group" == "root" ]; then
 +echo "Изменение владельца и группы для файла: $file"
 +sudo chown bareos:bareos "$file"
 +sudo chmod 750 "$file"
 +fi
 +fi
 +done
 +echo "Готово! Все необходимые файлы были изменены."
 +# Автомонтирование папок
 +# Формирование строки для fstab
 +remote_path="//10.0.0.175/backup/${mount_name}" # Укажите ваше удаленное хранилище
 +local_path="/mnt/backup/${client_name}"
 +options="cifs username=bareos,password=ВАШ ПАРОЛЬ,uid=ВАШ UID,gid=ВАШ GID,file_mode=0775,dir_mode=0775 0 0" # Укажите ваши данные для монтирования каталога
 +# Обработка пробелов только в первой части
 +remote_path_escaped=$(echo "$remote_path" | sed 's/ /\\ /g')
 +# Формирование окончательной строки для fstab
 +mount_entry="${remote_path_escaped} ${local_path} ${options}"
 +# Проверка, существует ли уже такая строка в fstab
 +if grep -q -F "$mount_entry" /etc/fstab; then
 +echo "Строка для монтирования уже существует в /etc/fstab."
 +else
 +# Добавление строки в /etc/fstab
 +echo "$mount_entry" | sudo tee -a /etc/fstab > /dev/null
 +# Проверка успешности добавления
 +if [ $? -eq 0 ]; then
 +echo "Строка для монтирования успешно добавлена в /etc/fstab."
 +# Перезапуск fstab и монтирование всех файловых систем
 +echo "Перезапускаем /etc/fstab..."
 +sudo mount -a
 +# Проверка успешности монтирования
 +if [ $? -eq 0 ]; then
 +echo "Все файловые системы успешно смонтированы."
 +else
 +echo "Ошибка при монтировании файловых систем."
 +fi
 +else
 +echo "Ошибка при добавлении строки в /etc/fstab."
 +fi
 +fi
 +# Вывод информации о завершении
 +echo "Конфигурация для клиента ${client_name} успешно завершена!"
 +echo "Пожалуйста, проверьте созданные файлы:"
 +echo "Клиент: $client_config_file"
 +echo "JobDefs: $jobdefs_file"
 +echo "Backup Job: $backup_file"
 +echo "Pools: "
 +for pool in "${pool_files[@]}"; do
 +echo " - /etc/bareos/bareos-dir.d/pool/${pool}.conf"
 +done
 +echo "Storage: $storage_file"
 +echo "Device: $device_file"
 +# Сервисы для перезагрузки
 +services=("bareos-dir" "bareos-sd" "bareos-fd")
 +# Перезагрузка сервисов
 +for service in "${services[@]}"; do
 +echo "Перезагрузка сервиса $service..."
 +sudo systemctl restart "$service"
 +# Проверка успешности перезагрузки
 +if [ $? -eq 0 ]; then
 +echo "Сервис $service успешно перезагружен."
 +else
 +echo "Ошибка при перезагрузке сервиса $service."
 +fi
 +done
 +echo ""
 +# Вывод статусов сервисов
 +for service in "${services[@]}"; do
 +echo "Статус сервиса $service:"
 +sudo systemctl status "$service" --no-pager
 +echo ""
 +done
 +# Конец скрипта</code>
 +==== Содержимое клиентского скрипта ====
 +<code>#!/bin/bash
 +# Определяем переменную DIST в зависимости от дистрибутива
 +if grep -q -i "ubuntu" /etc/os-release; then
 +DIST="xUbuntu_$(lsb_release -rs | cut -d. -f1,2)"
 +elif grep -q -i "centos" /etc/os-release || grep -q -i "fedora" /etc/os-release; then
 +DIST="EL_$(grep -oP '(?<=release )\d+' /etc/redhat-release | head -1)"
 +else
 +echo "Unsupported operating system."
 +exit 1
 +fi
 +# Скачиваем настройки для репозитория
 +if [[ $DIST == xUbuntu* ]]; then
 +wget https://download.bareos.org/current/${DIST}/bareos.list -O /etc/apt/sources.list.d/bareos_${DIST}.list
 +# Устанавливаем пакет для шифрования и Дешифровки цифровых подписей
 +apt install -y gnupg2
 +# Устанавливаем ключ подписи пакетов
 +wget -q https://download.bareos.org/current/${DIST}/Release.key -O- | apt-key add -
 +# Обновляем список пакетов
 +apt update
 +# Устанавливаем пакет для bareos-fd
 +apt install -y bareos-filedaemon
 +# Разрешаем автозапуск сервиса
 +systemctl enable bareos-filedaemon
 +# Настраиваем брандмауэр
 +iptables -I INPUT -p tcp --dport 9102 -j ACCEPT
 +apt-get install -y iptables-persistent
 +netfilter-persistent save
 +elif [[ $DIST == EL* ]]; then
 +wget https://download.bareos.org/current/${DIST}/bareos.repo -O /etc/yum.repos.d/bareos_${DIST}.repo
 +# Устанавливаем пакет для bareos-fd
 +yum install -y bareos-fd
 +# Разрешаем автозапуск сервиса и стартуем его
 +systemctl enable bareos-fd --now
 +# Настраиваем брандмауэр
 +firewall-cmd --permanent --add-port=9102/tcp
 +firewall-cmd --reload
 +else
 +echo "Unsupported operating system."
 +exit 1
 +fi
 +# Проверяем доступность сервера
 +ping -c 3 ВАШ СЕРВЕР ГДЕ УСТАНОВЛЕН ДИРЕКТОР
 +if [ $? -ne 0 ]; then
 +echo "10.0.0.111 ВАШ СЕРВЕР ГДЕ УСТАНОВЛЕН ДИРЕКТОР" >> /etc/hosts
 +ping -c 3 ВАШ СЕРВЕР ГДЕ УСТАНОВЛЕН ДИРЕКТОР
 +if [ $? -ne 0 ]; then
 +echo "Server ВАШ СЕРВЕР ГДЕ УСТАНОВЛЕН ДИРЕКТОР is still not reachable after adding to /etc/hosts."
 +exit 1
 +fi
 +fi
 +# Настройка файла /etc/bareos/bareos-fd.d/director/bareos-dir.conf
 +cat <<EOL > /etc/bareos/bareos-fd.d/director/bareos-dir.conf
 +Director {
 +Name = bareos-dir
 +Password = "ПАРОЛЬ НУЖНО ВЗЯТЬ ИЗ СОЗДАННОГО КЛИЕНТА НА СЕРВЕРЕ /etc/bareos/bareos-dir.d/client/"
 +Description = "Allow the configured Director to access this file daemon."
 +}
 +EOL
 +# Перезапускаем bareos-fd и выводим его статус
 +systemctl restart bareos-fd
 +systemctl status bareos-fd --no-pager
 +echo "Bareos installation and configuration completed successfully."
 +echo "Замените пароль вот тут /etc/bareos/bareos-fd.d/director/bareos-dir.conf"</code>
 +
 +Таким образом, после выполнения скриптов в вашем веб-интерфейсе появятся созданные клиенты, готовые к работе.\\
 +
 +Мы завершили это увлекательное путешествие в мир резервного копирования, где каждый шаг приближал нас к созданию надежной инфраструктуры для защиты данных.\\
 +
 +Я надеюсь, эта информация была для вас полезной и вдохновила на новые свершения. Спасибо, что были со мной на протяжении всей статьи! Не забывайте следить за обновлениями на моем канале, где я продолжаю делиться ценными знаниями и практическими рекомендациями в области технологий.\\
 +
 +Удачи вам в ваших проектах и до новых встреч!
 +
 +