Всем доброго дня.
Несколько лет назад делал заметку про установку системы резервного копирования 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 — куда восстанавливать. В данном случае, восстановление будет на самом клиенте. Можно сделать восстановление на сам сервер, например.
Для каждого клиента надо сделать свой шаблон бэкапа. Для восстановления, думаю, что можно сделать унифицированный, но это не точно.
Как видно параметров оч много. Создадим задание для бэкапа с минимально необходимым количеством:
1 | sudo nano job/win-srv-test-bckp.conf |
с таким содержимым:
1 2 3 4 5 6 | Job { Name = "backup-win-srv-test" JobDefs = "win-srv-test" Client = "win-srv-test" Fileset = "win-srv-test" } |
Добавил fileset, который сделали выше.
JobDefs — набор параметров для пользователя (об этом ниже).
А так же задание для восстановления:
1 | sudo nano job/win-srv-test-restore.conf |
с таким содержимым:
1 2 3 4 5 6 7 8 9 10 11 | Job { Name = "restore-win-srv-test" Description = "Standard Restore template. Only one such job is needed for all standard Jobs/Clients/Storage ..." Type = Restore Client = win-srv-test FileSet = "win-srv-test" Storage = File Pool = Full2 Messages = Standard Where = "D:/RESTORE" } |
Where = «D:/RESTORE» — куда восстанавливать на клиенте.
Jobdefs.
Само задание не создает, но определяет некоторые параметры.
Тут только один конфигурационный шаблон — DefaultJob.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | JobDefs { Name = "DefaultJob" Type = Backup Level = Incremental Client = bareos-fd FileSet = "SelfTest" # selftest fileset Schedule = "WeeklyCycle" Storage = File Messages = Standard Pool = Incremental Priority = 10 Write Bootstrap = "/var/lib/bareos/%c.bsr" Full Backup Pool = Full # write Full Backups into "Full" Pool Differential Backup Pool = Differential # write Diff Backups into "Differential" Pool Incremental Backup Pool = Incremental # write Incr Backups into "Incremental" Pool } |
Type — определяет тип задания
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 | The Type directive specifies the Job type, which is one of the following: Backup Run a backup Job. Normally you will have at least one Backup job for each client you want to save. Normally, unless you turn off cataloging, most all the important statistics and data concerning files backed up will be placed in the catalog. Restore Run a restore Job. Normally, you will specify only one Restore job which acts as a sort of prototype that you will modify using the console program in order to perform restores. Although certain basic information from a Restore job is saved in the catalog, it is very minimal compared to the information stored for a Backup job – for example, no File database entries are generated since no Files are saved. Restore jobs cannot be automatically started by the scheduler as is the case for Backup, Verify and Admin jobs. To restore files, you must use the restore command in the console. Verify Run a verify Job. In general, verify jobs permit you to compare the contents of the catalog to the file system, or to what was backed up. In addition, to verifying that a tape that was written can be read, you can also use verify as a sort of tripwire intrusion detection. Admin Run an admin Job. An Admin job can be used to periodically run catalog pruning, if you do not want to do it at the end of each Backup Job. Although an Admin job is recorded in the catalog, very little data is saved. Migrate defines the job that is run as being a Migration Job. A Migration Job is a sort of control job and does not have any Files associated with it, and in that sense they are more or less like an Admin job. Migration jobs simply check to see if there is anything to Migrate then possibly start and control new Backup jobs to migrate the data from the specified Pool to another Pool. Note, any original JobId that is migrated will be marked as having been migrated, and the original JobId can nolonger be used for restores; all restores will be done from the new migrated Job. Copy defines the job that is run as being a Copy Job. A Copy Job is a sort of control job and does not have any Files associated with it, and in that sense they are more or less like an Admin job. Copy jobs simply check to see if there is anything to Copy then possibly start and control new Backup jobs to copy the data from the specified Pool to another Pool. Note that when a copy is made, the original JobIds are left unchanged. The new copies can not be used for restoration unless you specifically choose them by JobId. If you subsequently delete a JobId that has a copy, the copy will be automatically upgraded to a Backup rather than a Copy, and it will subsequently be used for restoration. Consolidate is used to consolidate Always Incremental Backups jobs, see Always Incremental Backup Scheme. It has been introduced in Bareos Version >= 16.2.4. Within a particular Job Type, there are also Levels, see Level (Dir->Job). |
Level — уровень резервного копирования: Full, Incremental и Differential;
Client — для кого. Например, создавали ранее win-srv-test;
Fileset — созданый для нашего клиента выше;
Schedule — расписание (об этом ниже);
Pool — набор хранения томов (об этом ниже).
Создам набор для моего пользователя:
1 | nano win-srv-test.conf |
с таким содержимым:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | JobDefs { Name = "win-srv-test" Type = Backup Level = Full Client = win-srv-test FileSet = "win-srv-test" # selftest fileset (#13) Schedule = "win-srv-test" Storage = File Messages = Standard Pool = Diff2 Priority = 10 Write Bootstrap = "/var/lib/bareos/%c.bsr" Full Backup Pool = Full2 # write Full Backups into "Full" Pool (#05) Differential Backup Pool = Diff2 # write Diff Backups into "Differential" Pool (#08) } |
Messages.
1 2 3 | messages/ ├── Daemon.conf └── Standard.conf |
Файлы конфигурации определяющие отправку сообщений.
Daemon.conf — для доставки сообщений для «демонов» без заданий.
Standard.conf — отправка сообщений в консоль и по почте.
Pool.
Более подробная информация в документации.
1 2 3 4 5 | pool ├── Differential.conf ├── Full.conf ├── Incremental.conf └── Scratch.conf |
Определяет набор хранения томов:
Recycle — повторное использование тома (как мне кажется, это для ленточного хранилища);
AutoPrune — применяется, когда в пуле нет новых томов. Сокращение объема путем удаления просроченных заданий (старше, чем Volume Retention) из Каталога и допускает возможную переработку Тома.
Volume Retention — определяет как долго хранить бэкап (90 дней) и
Maximum Volumes — лимит «Хранилищ» в данном пуле;
Label Format — формат именования резервной копии.
Differential.conf
1 2 3 4 5 6 7 8 9 10 | Pool { Name = Differential Pool Type = Backup Recycle = yes # Bareos can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 90 days # How long should the Differential Backups be kept? Volume Retention = 10G # Limit Volume size to something reasonable Maximum Volumes = 100 # Limit number of Volumes in Pool Label Format = "Differential-" # Volumes will be labeled "Differential-<volume-id>" } |
Full.conf
1 2 3 4 5 6 7 8 9 10 | Pool { Name = Full Pool Type = Backup Recycle = yes # Bareos can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 365 days # How long should the Full Backups be kept? Maximum Volume Bytes = 50G # Limit Volume size to something reasonable Maximum Volumes = 100 # Limit number of Volumes in Pool Label Format = "Full-" # Volumes will be labeled "Full-<volume-id>" } |
Incremental.conf
1 2 3 4 5 6 7 8 9 10 | Pool { Name = Incremental Pool Type = Backup Recycle = yes # Bareos can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 30 days # How long should the Incremental Backups be kept? Maximum Volume Bytes = 1G # Limit Volume size to something reasonable Maximum Volumes = 100 # Limit number of Volumes in Pool Label Format = "Incremental-" # Volumes will be labeled "Incremental-<volume-id>" } |
Scratch.conf
1 2 3 4 | Pool { Name = Scratch Pool Type = Scratch } |
Scratch Pool
In general, you can give your Pools any name you wish, but there is one important restriction: the Pool named Scratch, if it exists behaves like a scratch pool of Volumes in that when Bareos needs a new Volume for writing and it cannot find one, it will look in the Scratch pool, and if it finds an available Volume, it will move it out of the Scratch pool into the Pool currently being used by the job.
Я сделаю пул для разностного копирования со своими параметрами:
1 | sudo nano pool/Diff2.conf |
содержимое файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Pool { Name = Diff2 Pool Type = Backup RecyclePool = Diff2 Purge Oldest Volume = yes Recycle = no # запретить повторное использование томов Recycle Oldest Volume = no AutoPrune = no # не удалять записи автоматически Volume Retention = 21 days # на один год исключаем автоудаление записей из каталога и перезапись тома ActionOnPurge = Truncate Maximum Volume Jobs = 1 # Использовать том только для одного задания # после чего он сразу метится как использованный # и не используется для добавления пока не будет # recycled если это разрешено Label Format = "${Client}_${Level}_${Pool}.${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-${Hour:p/2/0/r}-${Minute:p/2/0/r}_${JobId}" } |
а так же для полного копирования:
1 | sudo nano pool/Full2.conf |
содердимое файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Pool { Name = Full2 Pool Type = Backup RecyclePool = Full2 Purge Oldest Volume = yes Recycle = no # запретить повторное использование томов Recycle Oldest Volume = no AutoPrune = no # не удалять записи автоматически Volume Retention = 30 days # на один год исключаем автоудаление записей из каталога и перезапись тома ActionOnPurge = Truncate Maximum Volume Jobs = 1 # Использовать том только для одного задания # после чего он сразу метится как использованный # и не используется для добавления пока не будет # recycled если это разрешено Label Format = "${Client}_${Level}_${Pool}.${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-${Hour:p/2/0/r}-${Minute:p/2/0/r}_${JobId}" } |
Если другие файлы конфигурации не нужны, то их можно переместить куда-нибудь, что бы не путались. Т.к. в web’е они все будут показываться, т.к. доступны:
Но учтите, что на эти Pool’ы есть ссылки (указания их использования) в стандартных файлах конфигураций. Поэтому, если стандартные нужны, то надо либо там их закоментить, либо удалить вовсе.
Profile.
1 2 3 4 5 | profile/ ├── operator.conf ├── webui-admin.conf ├── webui-limited.conf.example └── webui-readonly.conf |
Здесь находятся файлы конфигурации, в которых задаются наборы (списки) доступа для пользователей.
operator.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Profile { Name = operator Description = "Profile allowing normal Bareos operations." Command ACL = !.bvfs_clear_cache, !.exit, !.sql Command ACL = !configure, !create, !delete, !purge, !prune, !sqlquery, !umount, !unmount Command ACL = *all* Catalog ACL = *all* Client ACL = *all* FileSet ACL = *all* Job ACL = *all* Plugin Options ACL = *all* Pool ACL = *all* Schedule ACL = *all* Storage ACL = *all* Where ACL = *all* } |
webui-admin.conf
1 2 3 4 5 6 7 8 9 10 11 12 | Profile { Name = "webui-admin" CommandACL = !.bvfs_clear_cache, !.exit, !.sql, !configure, !create, !delete, !purge, !prune, !sqlquery, !umount, !unmount, *all* Job ACL = *all* Schedule ACL = *all* Catalog ACL = *all* Pool ACL = *all* Storage ACL = *all* Client ACL = *all* FileSet ACL = *all* Where ACL = *all* } |
webui-limited.conf.example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Profile { Name = "webui-limited" # Multiple CommandACL directives as given below are concatenated CommandACL = .api, .help, use, version, status, show CommandACL = list, llist CommandACL = run, rerun, cancel, restore CommandACL = .clients, .jobs, .filesets, .pools, .storages, .defaults, .schedule CommandACL = .bvfs_update, .bvfs_get_jobids, .bvfs_lsdirs, .bvfs_lsfiles CommandACL = .bvfs_versions, .bvfs_restore, .bvfs_cleanup JobACL = backup-bareos-fd, RestoreFiles ScheduleACL = WeeklyCycle CatalogACL = MyCatalog PoolACL = Full, Differential, Incremental StorageACL = File ClientACL = bareos-fd FilesetACL = SelfTest WhereACL = *all* } |
webui-readonly.conf
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 | Profile { Name = "webui-readonly" # Allow access to the following commands CommandACL = .api, .help, use, version, status CommandACL = list, llist CommandACL = .clients, .jobs, .filesets, .pools, .storages, .defaults, .schedule CommandACL = .bvfs_lsdirs, .bvfs_lsfiles, .bvfs_update, .bvfs_get_jobids, .bvfs_versions, .bvfs_restore # Allow access to the following job resources Job ACL = *all* # Allow access to the following schedule resources Schedule ACL = *all* # Allow access to the following catalog resources Catalog ACL = *all* # Allow access to the following pool resources Pool ACL = *all* # Allow access to the following storage resources Storage ACL = *all* # Allow access to the following client resources Client ACL = *all* # Allow access to the following filset resources FileSet ACL = *all* # Allow access to restore to any filesystem location Where ACL = *all* } |
Это стандартные наборы, можно сделать свой профиль и потом назначить его пользователю в Console.
Schedule.
1 2 3 | schedule/ ├── WeeklyCycleAfterBackup.conf └── WeeklyCycle.conf |
Оно же расписание.
WeeklyCycleAfterBackup.conf
1 2 3 4 5 | Schedule { Name = "WeeklyCycleAfterBackup" Description = "This schedule does the catalog. It starts after the WeeklyCycle." Run = Full mon-fri at 21:10 } |
WeeklyCycle.conf
1 2 3 4 5 6 | Schedule { Name = "WeeklyCycle" Run = Full 1st sat at 21:00 Run = Differential 2nd-5th sat at 21:00 Run = Incremental mon-fri at 21:00 } |
Определяет день и время запуска резервного копирования.
Создается либо для каждого клиента отдельно, либо можно создать общий для однотипных заданий.
Сделаю для своего тестового клиента:
1 2 3 4 5 | Schedule { Name = "win-srv-test" Run = Level=Full Pool=Full2 sat at 22:00 #запуск полного копирования каждую пятницу в 21:00 Run = Level=Differential Pool=Diff2 Sun-Fri at 21:00 #запуск разностного копирования с пн по чт в 21:00 } |
Storage.
1 2 | storage/ └── File.conf |
1 2 3 4 5 6 7 | Storage { Name = File Address = backup-srv # N.B. Use a fully qualified name here (do not use "localhost" here). Password = "*************************************" Device = FileStorage Media Type = File } |
Address — можно указать полное доменное имя сервера, либо localhost, либо ip.
Что бы file demon (fd) мог подключиться к storage demon (sd).
Здесь ничего не менял.
User.
Тут пусто.
Хранилище.
Добавление каталога, где будут храниться резервные копии.
1 | sudo nano /etc/bareos/bareos-sd.d/device/FileStorage.conf |
содержимое файла
1 2 3 4 5 6 7 8 9 10 11 | Device { Name = FileStorage Media Type = File Archive Device = /var/lib/bareos/storage LabelMedia = yes; # lets Bareos label unlabeled media Random Access = yes; AutomaticMount = yes; # when device opened, read it RemovableMedia = no; AlwaysOpen = no; Description = "File device. A connecting Director must have the same Name and MediaType." } |
Archive Device — вот тут надо указать тот каталог, где будут бэкапы лежать.
И тут интересный момент. Т.к. BareOS — это форк Bacula, они как бы под ленточные хранилища заточены. И могут выполнять тока одно задание (если я не прав, то прошу прощения). Так вот, что бы можно было выполнять несколько заданий одновременно, надо добавить еще этих самых хранилищ.
Для этого можно просто скопировать секцию и переименовать только Name. Вот пример, когда хранилищ много:
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 | Device { Name = FileStorage Media Type = File Archive Device = /test1/backups LabelMedia = yes; # lets Bareos label unlabeled media Random Access = yes; AutomaticMount = yes; # when device opened, read it RemovableMedia = no; AlwaysOpen = no; Description = "File device. A connecting Director must have the same Name and MediaType." } Device { Name = FileStorage1 Media Type = File Archive Device = /test1/backups LabelMedia = yes; # lets Bareos label unlabeled media Random Access = yes; AutomaticMount = yes; # when device opened, read it RemovableMedia = no; AlwaysOpen = no; Description = "File device. A connecting Director must have the same Name and MediaType." } Device { Name = FileStorage2 Media Type = File Archive Device = /test1/backups LabelMedia = yes; # lets Bareos label unlabeled media Random Access = yes; AutomaticMount = yes; # when device opened, read it RemovableMedia = no; AlwaysOpen = no; Description = "File device. A connecting Director must have the same Name and MediaType." } |
Примерная схема настройки бэкапов.
Каталоги: catalog, director и user — не нужны, их трогать не надо.
Конфигурации, которые настариваются на стороне сервера один раз: console, message, profile и storage — влияют на работу сервера, настраиваются один раз. Сюда можно было бы и отнести pool, но всё зависит от потребностей. В моем случае, я настроил один раз конфиги в pool.
Для добавления нового клиента можно выбрать такую последовательность создания:
client — создать конфиг подключения для каждого отдельно,
fileset — список файлов и каталогов для бэкапа, создается для каждого клиента,
schedule — расписание для клиента, создается отдельно для каждого,
jobdefs — набор параметров для заданий (job), создается для каждого клиента,
job — задание бэкапа и\или восстановления, создается для каждого клиента или какое-то общее.
После создания новых файлов конфигураций необходимо назначить владельца:
1 | sudo chown bareos:bareos * -R |
После этого перезапустить сервписы:
1 | sudo systemctl restart bareos-dir bareos-fd bareos-sd |
Клиент под Linux.
Для установки в ОС Linux, на примере Ubuntu Server 22.04, надо так же добавить репозиторий, который в самом начале этой заметки, а потом установить клиент:
1 | sudo aptitude install bareos-client |
Далее, после установки, пароль от клиента можно взять вот здесь:
1 | /etc/bareos/bareos-fd.d/director/bareos-dir.conf |
После запустить проверить статус сервиса и, при необходимости, запустить:
1 2 | sudo systemctl status bareos-fd sudo systemctl start bareos-fd |
Теперь надо на сервер добавить клиента и все остальные параметры, аналогично тому, как делали на примере win-srv-test.
Восстановление.
Для возможности восстановления надо создать соответствующий конфигурационный файл для клинета. Такой мы сделали ранее для Windows-клиента. Для Linux будет точно такой же конфиг:
1 2 3 4 5 6 7 8 9 10 11 | Job { Name = "restore-lin-srv1" Description = "RESTORE files on LINUX-SERVER" Type = Restore Client = lin-srv1 FileSet = "lin-srv1" Storage = File Pool = Full2 Messages = Standard Where = "/RESTORE" } |
где:
Type = Restore — выбираем тип, в данном случае это восстановление;
Client — для какого сервера предназначается;
FileSet — соданный ранее набор каталогов и файлов для резервного копирования;
Pool — созданый ранее;
Where — куда на клиенте будет произведено восстановление.
Для пути, указаного в Where, надо установить возможность записи — назначить владельцам пользователя bareos.
В Webui выбрать соответствующий раздел:
Далее, выбрать клиента
После выбора клиента остальные поля заполнятся автоматические.
Посмотрите и убедитесь, что всё указано так, как вам надо. После чего нажать кнопку Restore.
Посмотреть лог выполнения задачи можно нажав на ID задания.
Консоль.
Помимо webui есть основной инструмент управления — bconsole.
1 | sudo bconsole -? |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | bareos.org binaries are UNSUPPORTED by bareos.com. Get official binaries and vendor support on https://www.bareos.com Copyright (C) 2013-2022 Bareos GmbH & Co. KG Copyright (C) 2000-2012 Free Software Foundation Europe e.V. Copyright (C) 2010-2017 Planets Communications B.V. Version: 21.1.5~pre43.748f13896 (09 September 2022) Ubuntu 22.04 LTS Usage: bconsole [-s] [-c config_file] [-d debug_level] -D <dir> select a Director -l list defined Directors -c <path> specify configuration file or directory -p <file> specify pam credentials file (first line: username, second line: password) -o send pam credentials over unencrypted connection -d <nn> set debug level to <nn> -dt print timestamp in debug output -s no signals -u <nn> set command execution timeout to <nn> seconds -t test - read configuration and exit -xc print configuration and exit -xs print configuration file schema in JSON format and exit -? print this message. |
Т.к. я ее запускаю на сервере, где установлен BareOS, то не указываю никаких параметров.
После запуска можно посмотреть помощь набрав help:
Command | Description |
======= | =========== |
add | Add media to a pool |
autodisplay | Autodisplay console messages |
automount | Automount after label |
cancel | Cancel a job |
configure | Configure director resources |
create | Create DB Pool from resource |
delete | Delete volume, pool or job |
disable | Disable a job/client/schedule |
enable | Enable a job/client/schedule |
estimate | Performs FileSet estimate, listing gives full listing |
exit | Terminate Bconsole session |
export | Export volumes from normal slots to import/export slots |
gui | Switch between interactive (gui off) and non-interactive (gui on) mode |
help | Print help on specific command |
import | Import volumes from import/export slots to normal slots |
label | Label a tape |
list | List objects from catalog |
llist | Full or long list like list command |
messages | Display pending messages |
memory | Print current memory usage |
mount | Mount storage |
move | Move slots in an autochanger |
prune | Prune records from catalog |
purge | Purge records from catalog |
quit | Terminate Bconsole session |
query | Query catalog |
restore | Restore files |
relabel | Relabel a tape |
release | Release storage |
reload | Reload conf file |
rerun | Rerun a job |
resolve | Resolve a hostname |
run | Run a job |
status | Report status |
setbandwidth | Sets bandwidth |
setdebug | Sets debug level |
setdevice | Sets device parameter |
setip | Sets new client address — if authorized |
show | Show resource records |
sqlquery | Use SQL to query catalog |
time | Print current time |
trace | Turn on/off trace to file |
truncate | Truncate purged volumes |
unmount | Unmount storage |
umount | Umount — for old-time Unix guys, see unmount |
update | Update volume, pool, slots, job or statistics |
use | Use specific catalog |
var | Does variable expansion |
version | Print Director version |
wait | Wait until no jobs are running |
whoami | Print the user name associated with this console |
Для просмотра справки по команде, можно ввести help [command]
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 | *help list Command Description ======= =========== list List objects from catalog Arguments: basefiles jobid=<jobid> | basefiles ujobid=<complete_name> | backups client=<client-name> [fileset=<fileset-name>] [jobstatus=<status>] [level=<level>] [order=<asc|desc>] [limit=<number>] | clients | copies jobid=<jobid> | files jobid=<jobid> | files ujobid=<complete_name> | filesets | fileset [ jobid=<jobid> ] | fileset [ ujobid=<complete_name> ] | fileset [ filesetid=<filesetid> ] | fileset [ jobid=<jobid> ] | jobs [job=<job-name>] [client=<client-name>] [jobstatus=<status>] [joblevel=<joblevel>] [volume=<volumename>] [days=<number>] [hours=<number>] [last] [count] | job=<job-name> [client=<client-name>] [jobstatus=<status>] [volume=<volumename>] [days=<number>] [hours=<number>] | jobid=<jobid> | ujobid=<complete_name> | joblog jobid=<jobid> | joblog ujobid=<complete_name> | jobmedia jobid=<jobid> | jobmedia ujobid=<complete_name> | jobtotals | jobstatistics jobid=<jobid> | log [ limit=<number> [ offset=<number> ] ] [reverse]| media [ jobid=<jobid> | ujobid=<complete_name> | pool=<pool-name> | all ] | media=<media-name> | nextvol job=<job-name> | nextvolume ujobid=<complete_name> | pools | pool=<pool-name> | storages | volumes [ jobid=<jobid> | ujobid=<complete_name> | pool=<pool-name> | all ] [count] | volume=<volume-name> | [current] | [enabled | disabled] | [limit=<number> [offset=<number>]] |
Можно посмотреть статус набрав соответствующую команду — status:
1 | status |
Выбираем что нужно указав цифру и нажав Enter. Например, Director — 1:
Извиняюсь, что пришлось замазать название клиентов.
Команда show покажет все вашу конфигурационные настройки.
Попробуем команду restore — восстановить файлы:
Как видно, тут много вариантов поиска работ (jobs)по резервным копиям. Попробуем посмотреть список последних 20-ти работ, для этого выберем — 1:
Здесь представлена различная информация:
jobid — идентификатор работы. Потребуется для восстановления или удаления, например;
client — кто бэкапился;
starttime — дата и время старта работы;
joblevel — тип бэкапа: D — разностный, F — полный;
Level | Description |
Backup levels | |
F | Full backup: Every files |
I | Incremental: Files modified since last backup |
D | Differential: Files modified since last full backup |
S | Since: Not used |
f | Virtual full backup |
Verification levels | |
C | Verify from Catalog |
V | Verify: Init database |
O | Verify volume to Catalog entries |
d | Verify disk attributes to Catalog |
A | Verify data on volume |
Others | |
B | Base level job |
— | None: for Restore and Admin |
jobfiles — количество обработанных файлов;
jobbytes — размер в байтах.
Type | Description |
B | Backup Job |
V | Verify Job |
R | Restore Job |
D | Admin job |
C | Copy of a Job |
c | Copy Job |
M | A previous backup job that was migrated |
g | Migration Job |
A | Archive Job |
S | Scan Job |
U | Console program |
I | Internal system “job” |
Теперь после того, как мы знаем ID (в конкретно этом примере), то можем восстановить файлы. Для этого выберем 3: Enter list of comma separated JobIds to select:
и тут ввожу нужный jobid который надо восстановить.
После ввода идентификатора работы он мне показывает след инфу:
Command De | scription |
======= | =========== |
abort | abort and do not do restore |
add | add dir/file to be restored recursively, wildcards allowed |
cd | change current directory |
count | count marked files in and below the cd |
delete | delete dir/file to be restored recursively in dir |
dir | long list current directory, wildcards allowed |
done | leave file selection mode |
estimate | estimate restore size |
exit | same as done command |
find | find files, wildcards allowed |
help | print help |
ls | list current directory, wildcards allowed |
lsmark | list the marked files in and below the cd |
mark | mark dir/file to be restored recursively, wildcards allowed |
markdir | mark directory name to be restored (no files) |
pwd | print current working directory |
unmark | unmark dir/file to be restored recursively in dir |
unmarkdir | unmark directory name only no recursion |
quit | quit and do not do restore |
? | print help |
Как видно, можно посмотреть какие файлы есть в бэкапе. Выбрать только необходимые и т.п.
Я сразу ввожу add *, затем done для выбора всего каталога для восстановления. Далее, выбор конфига восстановления — выбираю для своего клиента, затем самого клиента, после чего подтверждаю запуск введя — yes:
Если задание большое, то можно посмотреть его статус:
1 | list jobid=20 |
где:
jobid=20 — тот Id, который вам выдала консоль после подтверждения операции.
Status | Description |
A | Job canceled by user |
B | Job blocked |
C | Job created but not yet running |
D | Verify differences |
E | Job terminated in error |
F | Job waiting on File daemon |
I | Incomplete Job |
L | Committing data (last despool) |
M | Job waiting for Mount |
R | Job running |
S | Job waiting on the Storage daemon |
T | Job terminated normally |
W | Job terminated normally with warnings |
a | SD despooling attributes |
c | Waiting for Client resource |
d | Waiting for maximum jobs |
e | Non-fatal error |
f | Fatal error |
i | Doing batch insert file records |
j | Waiting for job resource |
l | Doing data despooling |
m | Waiting for new media |
p | Waiting for higher priority jobs to finish |
q | Queued waiting for device |
s | Waiting for storage resource |
t | Waiting for start time |
Как видно, завершилось нормально. Теперь можно на клиенте посмотреть появились ли восстановленные файлы.
Bug fix.
В комментариях Алексей указал на баг и вот выпустили к нему фикс.
Для его исправления надо скачать архив по ссылке ниже bareos-master.zip, потом его закинуть на сервер, там распаковать и выполнить 3 команды (указаны поочередно):
1 2 3 | cd ~myuser/bareos cp webui/module/Job/view/job/job/index.phtml /usr/share/bareos-webui/module/Job/view/job/job/ cp webui/module/Job/view/job/job/details.phtml /usr/share/bareos-webui/module/Job/view/job/job/ |
где:
myuser — домашний каталог, куда был скопирован архив и там же распакован.
Полезное.
Если у вас сто тыщь заданий тестовых и вы хотите перед тем, как запустить в прод это всё дело показать руководству, то можно почистить БД от прошлых заданий и начать всё сначала. В каталоге — /usr/lib/bareos/scripts/ есть нужные нам скрипты.
НО КАК ВСЕГДА БУДЬТЕ ВНИМАТЕЛЬНЫЕ ПЕРЕД ТЕМ КАК ЧТО-ТО ИЗ ТОГО, ЧТО БУДЕТ НАПИСАНО НИЖЕ, ВЫПОЛНЯТЬ.
ВСЕ ДЕЙСТВИЯ ПОД ВАШУ ОТВЕТСТВЕННОСТЬ!
Выполним следующее:
— грохнем БД
1 | sudo bash /usr/lib/bareos/scripts/drop_bareos_database |
— создадим заново
1 | sudo bash /usr/lib/bareos/scripts/create_bareos_database |
— создадим таблицы
1 | sudo bash /usr/lib/bareos/scripts/make_bareos_tables |
— выдадим привилегии
1 | sudo bash /usr/lib/bareos/scripts/grant_bareos_privileges |
Ссылки:
документация (English)
Скачать zip-архив с исходным кодом на 09.11.2022 — bareos-master
баг от Алексея (из комментария) — пофиксили.
If you found an error, highlight it and press Shift + Enter or to inform us.
добрый день!
Благодарю за статью.
Создал задание для архивации ресурсов на Windows Server 2016
при запуске выдается ошибка:
Произошла ошибкаAn error occurred during execution; please try again later.Дополнительная информация:ExceptionФайл:
Сообщение:
Трассировки стека:
Добрый день.
А откуда этот лог?
через меню «Задания», раскрываем плюс напротив задания с ошибкой, в строке «Пул» кликаем на Diff2, там видим эту информацию
Есть такое дело, но это не та ошибка)))
Спасибо, надо им на github’е оставить инфу про этот момент.
На самом деле надо нажать на ID задания и уже там будет полный лог выполнения.
лог при выполнении задания:
Bareos bareos-dir 21.1.5~pre43.748f13896 (09Sep22):
Build OS: Ubuntu 22.04 LTS
JobId: 10
Job: backup-win-h4i31geeohd-fd.2022-11-02_21.00.00_38
Backup Level: Full (upgraded from Differential)
Client: «win-h4i31geeohd-fd» 21.1.5~pre43.748f13896 (09Sep22) Microsoft Windows Server 2012 Standard Edition (build 9200), 64-bit,Cross-compile
FileSet: «win-h4i31geeohd-fd» 2022-11-02 10:35:23
Pool: «Diff2» (From Run Pool override)
Catalog: «MyCatalog» (From Client resource)
Storage: «File» (From Job resource)
Scheduled time: 02-Nov-2022 21:00:00
Start time: 02-Nov-2022 21:00:06
End time: 02-Nov-2022 21:00:12
Elapsed time: 6 secs
Priority: 10
FD Files Written: 0
SD Files Written: 0
FD Bytes Written: 0 (0 B)
SD Bytes Written: 0 (0 B)
Rate: 0.0 KB/s
Software Compression: None
VSS: yes
Encryption: no
Accurate: no
Volume name(s):
Volume Session Id: 3
Volume Session Time: 1667386239
Last Volume Bytes: 0 (0 B)
Non-fatal FD errors: 2
SD Errors: 0
FD termination status: Fatal Error
SD termination status: Waiting on FD
Bareos binary info: bareos.org build: Get official binaries and vendor support on bareos.com
Job triggered by: Scheduler
Termination: *** Backup Error ***
132022-11-02 21:00:10bareos-dir JobId 10: Fatal error: Bad response to Storage command: wanted 2000 OK storage
, got 2902 Bad storage
122022-11-02 21:00:10win-h4i31geeohd-fd JobId 10: Fatal error: Failed to connect to Storage daemon: ubuntu:9103
112022-11-02 21:00:10win-h4i31geeohd-fd JobId 10: Error: lib/bsock_tcp.cc:184 BnetHost2IpAddrs() for host «ubuntu» failed: ERR=
Пишет, что не может подключиться к хранилищу.
На сервере все демоны запущены? Проверить можно:
да, все запущено. Задание для бекапа самой системы проходят успешно, а новое здание для сервера Windows не прошло.
● bareos-director.service — Bareos Director Daemon service
Loaded: loaded (/lib/systemd/system/bareos-director.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-11-09 06:51:51 UTC; 44min ago
Docs: man:bareos-dir(8)
Main PID: 958 (bareos-dir)
Tasks: 4 (limit: 2238)
Memory: 3.9M
CPU: 426ms
CGroup: /system.slice/bareos-director.service
└─958 /usr/sbin/bareos-dir -f
Nov 09 06:51:51 ubuntu systemd[1]: Started Bareos Director Daemon service.
● bareos-storage.service — Bareos Storage Daemon service
Loaded: loaded (/lib/systemd/system/bareos-storage.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-11-09 06:51:47 UTC; 44min ago
Docs: man:bareos-sd(8)
Main PID: 675 (bareos-sd)
Tasks: 2 (limit: 2238)
Memory: 2.4M
CPU: 38ms
CGroup: /system.slice/bareos-storage.service
└─675 /usr/sbin/bareos-sd -f
Nov 09 06:51:47 ubuntu systemd[1]: Started Bareos Storage Daemon service.
● bareos-filedaemon.service — Bareos File Daemon service
Loaded: loaded (/lib/systemd/system/bareos-filedaemon.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-11-09 06:51:47 UTC; 44min ago
Docs: man:bareos-fd(8)
Main PID: 674 (bareos-fd)
Tasks: 2 (limit: 2238)
Memory: 3.0M
CPU: 39ms
CGroup: /system.slice/bareos-filedaemon.service
└─674 /usr/sbin/bareos-fd -f
Nov 09 06:51:47 ubuntu systemd[1]: Started Bareos File Daemon service.
А подскажите, пожалуйста, пробовали с MS машины пинговать по имени сервер бэкапа?
нет, по имени не пингует, добавлю в файл host информацию для пинга и запущу задачу еще раз.
после добавления в файл host имени сервера задание стало проходить успешно. Каталоги успешно скопировались но без самих данных, которые были в них. Может нужна звездочка после слеш в указаниях путей? FileSet {
Name = «win-h4i31geeohd-fd»
Enable VSS = yes
Enable VSS = yes
Include {
Options {
Signature = MD5
Drive Type = fixed
IgnoreCase = yes
Exclude = yes
}
File = «C:/Share»
File = «C:/Users»
}
}
У вас почему-то 2 раза строка про VSS.
Вообще, согласно руководству, не надо там никаких звездочек.
У меня тоже пусто… как я прошляпил это дело не понимаю..
Сейчас проверю.
нашел причину, нужно Exclude = no , а дублирование Enable VSS = yes не мешало…
Спасибо!
Ну мне вот надо exclude, т.к. не всё надо в этом каталоге бэкапить.
Буду разбираться дальше.
успехов, и благодарю еще раз за помощь!
Алексей, спасибо за Ваше замечание по поводу того, что папка пустая.
Посмотрел руководство еще раз: как бы у нас правильно.
Единственное что, надо добавить строку:
После этого пошло копирование файлов в каталоге))
Сейчас поправлю в заметке.
это в каком конфигурационном файле добавить необходимо?
в fileset/[ваш_windows_клиент].conf