Всем доброго дня.
Несколько лет назад делал заметку про установку системы резервного копирования BareOS 17 на Ubuntu 14.04.
Теперь пришла необходимость актуализировать данные.
За основу взял то, о чем писал раньше + документацию.
Пожалуйста, обратите внимание, что заметка касается Ubuntu 22.04.
Если Вам надо другую версию Ubuntu или другую ОС, то обратитесь к документации!
Так же весь выбор, который будет во время установки, сделан с учетом моих потребностей. Для Вас выбор может быть другим!
Содержание
Подготовка.
Вот отсюда скачать скрипт добавления репозиториев – add_bareos_repositories.sh и затем положить на сервер.
Или на самом сервере выполнить команду:
1 | wget https://download.bareos.org/bareos/release/current/xUbuntu_22.04/add_bareos_repositories.sh |
Если возможности скачать нет, то вот его содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #!/bin/sh set -u set -e # See https://download.bareos.com/bareos/release/ (Bareos subscription customers) # or https://download.bareos.org/bareos/release/ # for applicable releases and distributions. PREFIX_DIR="" # declare the Bareos repository DOWNLOADSERVER="download.bareos.org" RELEASE="release/current" DIST="xUbuntu_22.04" URL="https://${DOWNLOADSERVER}/bareos/${RELEASE}/${DIST}" # setup credentials for apt auth # (required for download.bareos.com, subscription) BAREOS_USERNAME="username_at_example.com" BAREOS_PASSWORD="MySecretBareosPassword" if [ "${DOWNLOADSERVER}" = "download.bareos.com" ]; then cat <<EOT >"${PREFIX_DIR}/etc/apt/auth.conf.d/download_bareos_com.conf" machine download.bareos.com login ${BAREOS_USERNAME} password ${BAREOS_PASSWORD} EOT chmod 0600 "${PREFIX_DIR}/etc/apt/auth.conf.d/download_bareos_com.conf" fi # add the Bareos repository cat <<EOT >"${PREFIX_DIR}/etc/apt/sources.list.d/bareos.sources" Types: deb deb-src URIs: ${URL} Suites: / Architectures: amd64 Signed-By: ${PREFIX_DIR}/etc/apt/keyrings/bareos-release-current.gpg EOT # add package key mkdir -p "${PREFIX_DIR}/etc/apt/keyrings/" # download key via # wget -O /etc/apt/keyrings/bareos-release-current.gpg ${URL}/bareos-keyring.gpg # or cat << EOT | gpg --dearmor -o "${PREFIX_DIR}/etc/apt/keyrings/bareos-release-current.gpg" -----BEGIN PGP PUBLIC KEY BLOCK----- mQINBF23EK4BEAC1FADpF6aaC93bxouVT6/BuXJajjtLkHNKfY26BYuvpwgLmVwp M8vBuQWEPxxP6y2wXffv5bO/0Y1tS7tCW4i7duKz6W6as7/N13P/Mah8KOS0Zles VM94fKXX8um7okqY9EwqgWVyHetW0PVpMKCsguMezv0IUmGAi/XX/GgJBeDYWvTh S8DXtMhqWMXWv9yptJJsFQgdS0GVb8fcHG+Vl5GWmb+p8+R5x2JjLrP2OIoY8caD boueBiUUeYnlPQqBa7flZSlBslSbk8qwnr75r/fX0/ihnFfLZol348AOCjPeWEYM H3xQvuuyXsOg7dJ3dX4pE/MwUUOSlWyAACvCDYLQ+Xlvnt1j1dmbnGiBYRfn9cMZ YEDZVSey7LwUwkXi9yXAc5+g6+OUUz1dIoZCyiAezttU8yfoiLXgilOHm7LniW4o n5LIxTmo3pUSeEdQntFKd8jStIhvhGyKop1wlDU+FGUaxgWdswKE5se7WdaR6Em7 iuOMd9hZpS24Y4jeGjr4v4uwzB/Y8eB+vvM/ISGJltC8zgNpk81Dv1g2m/cy3YLb POUxNy5+TAdO3UztuYbGQqgDax8RESD/6CbC8Z8X4TXYETjqtBR/9dNWBJCMb3aT CXqZyc0YwiU0ISDCZhKbrPCkhwniOI4gqNz2pyFn9eUBw4xXx4DV0rQkyQARAQAB tDRCYXJlb3MgZXhwZXJpbWVudGFsIFNpZ25pbmcgS2V5IDxzaWduaW5nQGJhcmVv cy5jb20+iQI5BBMBAgAjBQJdtxCuAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgEC F4AACgkQQtokpt/vkSdp9RAAnYDZdfswrj5K2Kr/vL7rE5JrmbjoobapqqIIOnLg 3RfBMJqfc3CMFwpcPR8i2L1UluMiMYjHBrjeJrpqb6ZKbQQhTWxMj6vqHXaBWJ65 z1UjDHzbvY/1BjXQy2j7LusbCNZjgGkYtafl4/4IUiH6++n6QsPfagphOuY1k3Uv RqAKf/3DWChV8uU+lnMG3Gf9ZaJ4G3Q3ybxdJ2MMH/F4DIgWMMapRiRUZSEO/xgX gyS1f1TLUTgLL1p0rUuDb9Jk+ntfntxTlCZl/njdtUgGa+Fbom6itnGJZVI4PmRr f+7Rt+YOimp/LQ+dvcVoLrvX2uugdSe96yS8MWr6vbB4AipxKHsjp0bOuHj9yMr7 +VS9pQQ9frlk0gGkxjFflpvgjWqLnFBQjX7OFXW3U8w6vFjoWwS2zmdekWd36yF/ JUtG1aBIk7T5wOImVdDkT/QXXK21Lu2HUfymvBLpWiRPi6P7Nye6XSYp3i1lpV20 UmucKiOed93dBJLWcbelJdAJCPeLhvuTIZRZqrJ+z4ZozjgXf/8g7RR/HCKaUt+M i6P0TKYbyneXK166OqiyGGY0/enbAKSf/+K/FyPRsAHbGd+3wOY26QdL/JfNnJq0 eOkfPAZ+RjfWMd8VMMrx11gV+hPzszQHUKoWhyC0EndKuvU00QQ+EL6yBjMbjIHI KL8= =j9IV -----END PGP PUBLIC KEY BLOCK----- EOT echo "Repository ${URL} successfully added." |
Установим бит исполнения:
1 | sudo chmod +x add_bareos_repositories.sh |
После чего запустим:
1 | sudo ./add_bareos_repositories.sh |
Должно получиться как-то так:
Обновим список репозиториев:
1 | sudo apt update |
Так же необходимо установить СУБД:
1 | sudo aptitude install postgresql |
Если у Вас установлена отдельная СУБД на этом или другом сервере, то шаг можно пропустить!
Установка.
После добавления репозиториев, установим необходимые пакеты:
1 | sudo aptitude install bareos bareos-database-postgresql |
В данном случае, СУБД будет postgresql.
ВНИМАНИЕ! Во время установки будет предложено сконфигурировать Posftix, но мне на данном этапе это не надо, т.ч. я пропущу.
Если Вам надо, то Вы можете настроить это для себя!
Я выбрал – No configuration
Далее, будет окно конфигурации БД
Выбрать localhost
Далее, необходимо задать пароль:
Повторить ввода пароля:
После этого установка завершится.
Теперь установим WEBUI для упрощенной работы:
1 | sudo aptitude install bareos-webui |
Вместе с WEBUI установится все необходимое ПО
На этом установка завершена!
Настройка.
Теперь надо сконфигурировать всё это дело. Посмотрим на состояние сервисов: bareos-dir, bareos-sd и bareos-fd
1 | sudo systemctl status bareos-dir bareos-sd bareos-fd |
В моём случае они не запущены:
Теперь сконфигурируем WEBUI – создадим аккаунт:
повысим привилегии:
1 | sudo su |
Далее, перейдем в каталог с установленым BareOS:
1 | cd /etc/bareos/bareos-dir.d/console/ |
Теперь скопируем файл конфигурации:
1 | cp admin.conf.example admin.conf |
Теперь внесем изменения:
1 | nano admin.conf |
В поле Password укажем свой пароль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # # Restricted console used by bareos-webui # Console { Name = admin Password = "admin" Profile = "webui-admin" # As php does not support TLS-PSK, # and the director has TLS enabled by default, # we need to either disable TLS or setup # TLS with certificates. # # For testing purposes we disable it here TLS Enable = No } |
Запустим сервисы:
1 | systemctl start bareos-dir bareos-fd bareos-sd |
и проверить статус:
1 | sudo systemctl status bareos-dir bareos-sd bareos-fd |
И пробуем зайти по адресу:
http://[ip сервера или его имя]/bareos-webui
У меня возникла ошибка: 404 Not found
Попробую исправить:
Проверка, что Apache запущен. Для этого перейти в браузере по адресу: http://[ip_address or name_server]. Должна открыться страница по умолчанию.
Либо проверить, что он запущен:
1 | ps aux | grep apache |
Всё в порядке: и страница открывается, и процесс есть.
В моем случае надо добавить alias в файл конфигурации веб-сервера:
1 | nano /etc/apache2/sites-available/000-default.conf |
В самый низ вставляем эту строку:
1 | Alias /bareos-webui /usr/share/bareos-webui/ |
Перезапустить веб-сервер:
1 | systemctl restart apache2 |
Еще раз ввести в адресной строке браузера IP_ADDRESS или имя сервера.
И в случае успеха попробовать войти под учетными данными, что вносили в /etc/bareos/bareos-dir.d/console/admin.conf
У меня такое случилось после установки на свежую ОС.
Надо доставить один пакет:
1 | sudo apt install libapache2-mod-php8.1 |
Пример для php версии 8.1
Потом перезапустить apache:
1 | sudo systemctl restart apache2 |
На момент написания заметки в мире происходят ужасные события на Украине. Что-либо говорить по этому поводу я не буду, т.к. любые военные действия – это зло. На дворе 21-й век, но люди не ценят ничью жизнь, ставят свои амбиции выше всего.
Я всегда исключительно за мир, что бы любой вопрос был решен мирным путем.
Разработчики BareOS по-своему поддерживают Украину – это их право. Они сделали оформление темы в цветах украинского флага. Если кого-то это смущает, то можно поправить. Если нет, то шаг можно пропустить.
Проверить какие цвета на странице логина:
1 | grep -iHr "(#0075be 50%, #ffd700 50%)" /usr/share/bareos-webui/module/Application/view/layout/ |
если вывод не пустой, а вот такой
то выполнить следующую команду:
1 | sed -i 's/\#0075be\ 50\%\,\ \#ffd700\ 50\%/\#ffffff\,\ \#0075be/g' /usr/share/bareos-webui/module/Application/view/layout/login.phtml* |
После этого проверить:
1 | cat /usr/share/bareos-webui/module/Application/view/layout/login.phtml* | grep background |
Вывод должен быть таким:
Так же во вложении архив с картинками. Его надо распаковать, загрузить на сервер и заменить в /usr/share/bareos-webui/public/. Для примера, я загрузил в домашний каталог пользователя, потом скопировал:
1 | sudo cp -r ~myuser1/img/ /usr/share/bareos-webui/public/ |
myuser1 – имя вашего пользователя, куда вы загрузили архив
Архив с картинками – img
Рекомендую выбрать английский язык, т.к. перевод хромает.
После успешной авторизации должна открыться панель:
Далее, все имена, названия, ip-адреса и т.п. просто для примера.
Пожалуйста, будьте внимательны и указывайте свои значения!
Настройка bareos-dir.d.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | ├── catalog │ └── MyCatalog.conf ├── client │ └── bareos-fd.conf ├── console │ ├── admin.conf │ ├── admin.conf.example │ └── bareos-mon.conf ├── director │ └── bareos-dir.conf ├── fileset │ ├── Catalog.conf │ ├── LinuxAll.conf │ ├── SelfTest.conf │ └── Windows All Drives.conf ├── job │ ├── backup-bareos-fd.conf │ ├── BackupCatalog.conf │ └── RestoreFiles.conf ├── jobdefs │ └── DefaultJob.conf ├── messages │ ├── Daemon.conf │ └── Standard.conf ├── pool │ ├── Differential.conf │ ├── Full.conf │ ├── Incremental.conf │ └── Scratch.conf ├── profile │ ├── operator.conf │ ├── webui-admin.conf │ ├── webui-limited.conf.example │ └── webui-readonly.conf ├── schedule │ ├── WeeklyCycleAfterBackup.conf │ └── WeeklyCycle.conf ├── storage │ └── File.conf └── user |
Здесть находится несколько подкаталогов. Разберем каждый в отдельности.
Catalog
Содержит единственный файл – MyCatalog.conf
В нем параметры подключение к БД.
Client.
Здесь в дальнейшем будут находиться конфигурационные файлы клиентов, которые будут бэкапиться.
По умолчанию есть конфиг для самого сервера.
1 2 3 4 5 6 | Client { Name = bareos-fd Description = "Client resource of the Director itself." Address = localhost Password = "******************************" # password for FileDaemon } |
Можно либо создать свой для нужного сервера, либо при установке клиента в OS Windows он там генерируется и тогда надо будет оттуда скопировать данные, здесь создать конфиг-файл и туда вставить.
Пример файла конфигурации после установки клиента в Windows:
1 2 3 4 5 6 7 | Client { Name = win-srv-test Address = test-win-srv.local Password = "************************" # uncomment the following if using bacula # Catalog = "MyCatalog" } |
где
Address – имя машины, должно быть доступно с сервера,
Password – пароль.
Так же в Windows в этом файле хранится пароль от клиента:
1 | C:\ProgramData\Bareos\bareos-fd.d\director\bareos-dir.conf |
По такому принципу можно создавать клиентов для Linux.
В Ubuntu после установки файл конфигурации клиента лежит на клиентской машине вот тут:
/etc/bareos/bareos-fd.d/director/bareos-dir.conf
Обращаю внимание, что там Name = bareos-dir так и должно быть и в hosts этой машины или в dns, которые она использует (подразумевается dns-server в той же сети) прописать адрес для этого имени.
1 | 192.168.1.100 bareos-dir |
Еще можно на самом сервере с bareos добавить клиента через консоль управления. Для этого запустим bconsole
1 | bconsole |
и введем команду:
1 | configure add client name=my-linuxsrv-fd address=192.168.1.15 password=VerySuperStrongP@ssw0rd!234 |
После ввода команды должны увидеть вот такое сообщение:
Вот этот файл – /etc/bareos/bareos-dir-export/client/cloud-server-fd1/bareos-fd.d/director/bareos-dir.conf – надо скопировать на клиента в каталог – /etc/bareos/bareos-fd.d/director/
Либо создать там руками, с содержимым ниже.
Так же, после создания, надо назначить владельцем файла bareos:
1 | sudo chown bareos:bareos client_config.conf |
В противном случае будет ошибка.
Console.
Тут мы уже были. Создавали файл конфигурации для WEBUI.
Так же здесь можно создать других пользователей с разными наборами прав. Допустим, пользлователь “оператор” с соответствующим набором прав.
Профиль пользователей определяется параметром – Profile = “”. Список доступных профилей находится в каталоге Profile (ниже будет описание).
Director.
Тут один файл. Пока оставлю без изменений:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Director { # define myself Name = bareos-dir QueryFile = "/usr/lib/bareos/scripts/query.sql" Maximum Concurrent Jobs = 10 Password = "*************************" # Console password Messages = Daemon Auditing = yes # Enable the Heartbeat if you experience connection losses # (eg. because of your router or firewall configuration). # Additionally the Heartbeat can be enabled in bareos-sd and bareos-fd. # # Heartbeat Interval = 1 min # remove comment in next line to load dynamic backends from specified directory # Backend Directory = /usr/lib/bareos/backends # remove comment from "Plugin Directory" to load plugins from specified directory. # if "Plugin Names" is defined, only the specified plugins will be loaded, # otherwise all director plugins (*-dir.so) from the "Plugin Directory". # # Plugin Directory = "/usr/lib/bareos/plugins" # Plugin Names = "" } |
Тут ничего не менял.
Fileset.
Содержит 4 файла конфигурации:
1 2 3 4 5 | fileset/ ├── Catalog.conf ├── LinuxAll.conf ├── SelfTest.conf └── Windows All Drives.conf |
Содержимое файлов:
Catalog.conf. Определяет что копировать на самом сервере BareOS – File
1 2 3 4 5 6 7 8 9 10 11 | FileSet { Name = "Catalog" Description = "Backup the catalog dump and Bareos configuration files." Include { Options { signature = MD5 } File = "/var/lib/bareos/bareos.sql" # database dump File = "/etc/bareos" # configuration } } |
LinuxAll.conf. Тип поддерживаемых файловых систем – FS Type.
Exclude – исключенные пути.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | FileSet { Name = "LinuxAll" Description = "Backup all regular filesystems, determined by filesystem type." Include { Options { Signature = MD5 # calculate md5 checksum per file One FS = No # change into other filessytems FS Type = btrfs FS Type = ext2 # filesystems of given types will be backed up FS Type = ext3 # others will be ignored FS Type = ext4 FS Type = reiserfs FS Type = jfs FS Type = xfs FS Type = zfs } File = / } # Things that usually have to be excluded # You have to exclude /var/lib/bareos/storage # on your bareos server Exclude { File = /var/lib/bareos File = /var/lib/bareos/storage File = /proc File = /tmp File = /var/tmp File = /.journal File = /.fsck } } |
SelfTest.conf.
Указывает на расположение утилиты для определения контрольной суммы – File = “/usr/sbin”
1 2 3 4 5 6 7 8 9 10 | FileSet { Name = "SelfTest" Description = "fileset just to backup some files for selftest" Include { Options { Signature = MD5 # calculate md5 checksum per file } File = "/usr/sbin" } } |
‘Windows All Drives.conf’.
Для OS Windows.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | FileSet { Name = "Windows All Drives" Enable VSS = yes Include { Options { Signature = MD5 Drive Type = fixed IgnoreCase = yes WildFile = "[A-Z]:/hiberfil.sys" WildFile = "[A-Z]:/pagefile.sys" WildFile = "[A-Z]:/swapfile.sys" WildDir = "[A-Z]:/RECYCLER" WildDir = "[A-Z]:/$RECYCLE.BIN" WildDir = "[A-Z]:/System Volume Information" Exclude = yes } File = / } } |
Если в общем говорить, то это некие шаблоны в моем понимании (ну это написано в документации).
Надо создать свой шаблон, включить необходимые каталоги и\или файлы для бэкапа, а так же что-то исключить, если есть необходимость.
Так же можно создать шаблон, а потом использовать для разных однотипных клиентов, как пример.
Создам для своего Windows-клиента. У меня там СУБД MS SQL и каталог для IIS. Для этого скопирую “Windows All Drives.conf” под именем клиента:
1 | cp Windows\ All\ Drives.conf win-srv-test.conf |
и отредактирую для себя:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | FileSet { Name = "win-srv-test" Enable VSS = yes Include { Options { Signature = MD5 RegexDir = "([A-Za-z-]+)([0-9]{4}-[0-9]{2}-[0-9]{2})" Drive Type = fixed IgnoreCase = yes Exclude = yes } File = "C:/Program Files/Microsoft SQL Server/MSSQL11.MSSQLSERVER/MSSQL/DATA/TEST1.mdf" File = "C:/Program Files/Microsoft SQL Server/MSSQL11.MSSQLSERVER/MSSQL/DATA/TEST1_log.ldf" File = "C:/inetpub/wwwroot/TEST1" } Exclude { File = "C:/inetpub/wwwroot/TEST1/Content/MediaFiles" } } |
Name – название.
Enable VSS – использовать Volume Snapshot Service – теневое копирование, – если файл занят, то он снимет копию и создаст бэкап. Чисто для Windows.
File – путь до файла или каталога, которые должны попасть в бэкап.
Секция Exclude – то, что не надо бэкапить (выше написал про это, здесь просто пример).
Что бы бэкапились все файлы в каталоге, то надо добавить вот такую строку – RegexDir = “([A-Za-z-]+)([0-9]{4}-[0-9]{2}-[0-9]{2})”. Спасибо Алексею за его замечание.
Как будто бы всё.
Job.
Здесь определяется задание – бэкап или восстановление.
Тут три файла конфигурации:
1 2 3 4 | job/ ├── backup-bareos-fd.conf ├── BackupCatalog.conf └── RestoreFiles.conf |
И так, по порядку.
backup-bareos-fd.conf
1 2 3 4 5 | Job { Name = "backup-bareos-fd" JobDefs = "DefaultJob" Client = "bareos-fd" } |
Name – название работы
JobDefs – это шаблон самого задания резервного копирования. Сам шаблон вот тут – /etc/bareos/bareos-dir.d/jobdefs/. Об этом ниже.
Client – для какого клиента.
Шаблон восстановления – RestoreFiles.conf
1 2 3 4 5 6 7 8 9 10 11 | Job { Name = "RestoreFiles" Description = "Standard Restore template. Only one such job is needed for all standard Jobs/Clients/Storage ..." Type = Restore Client = bareos-fd FileSet = "LinuxAll" Storage = File Pool = Incremental Messages = Standard Where = /tmp/bareos-restores } |
Name – Название шаблона;
Client – для какого клиента использовать;
FileSet – файл с описанием того, что надо бэкапить;
Pool – тип резервного копирования (об это ниже);
Where – куда восстанавливать. В данном случае, восстановление будет на самом клиенте. Можно сделать восстановление на сам сервер, например.
Для каждого клиента надо сделать свой шаблон бэкапа. Для восстановления, думаю, что можно сделать унифицированный, но это не точно.