!!!!!!!!!!!! ПЕРЕПИСЫВАЮ
Описание компонентов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Bareos Director — компонент который управляет заданиями (jobs) и операциями резервного копирования, или восстановления, а так же управляет File и Storage Daemon’ами. Baroes Console — текстовая консоль для управления Bareos Director’ом через специальный командный синтаксис. По умолчанию устанавливается вместе с Bareos Director, но может устанавливаться и отдельно для удаленного подключения к Bareos Director. Bareos Web UI — веб-интерфейс Bareos. По умолчанию устанавливается вместе с Bareos Director. Данный компонент пока что на стадии развития и используется больше для удобного мониторинга, но можно вручную запускать задачи на резервное копирование, или восстановление. Тогда как расписание и задания создаются в основном через текстовые конфиги, или через консоль bareos, а не через веб-интерфейс. Bareos Catalog — база данных, которая содержит информацию по расписаниям, заданиям, сохраненным файлам, клиентам, статусам. Storage Daemon — компонент, который выполняет операции чтения и записи на устройствах хранения, используемых для резервного копирования. File Daemon — агент, который используется для сбора с “клиентских” систем и их размещения при операциях восстановления. |
Пример структуры каталогов по умолчанию для /etc/bareos:
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 |
. ├── bareos-dir.d │ ├── catalog │ │ └── MyCatalog.conf │ ├── client # конфиги клиентов \ учетные данные клиентов │ │ ├── bareos-fd.conf │ │ └── eyh.conf # конфиг клиента eyh │ ├── console │ │ ├── admin.conf │ │ ├── admin.conf.example │ │ └── bareos-mon.conf │ ├── director │ │ └── bareos-dir.conf │ ├── fileset # в этом каталоге мы задаем что бэкапим \ куда │ │ ├── Catalog.conf │ │ ├── eyh.conf # конфиг настроек бэкапа для eyh │ │ ├── LinuxAll.conf │ │ ├── SelfTest.conf │ │ └── Windows All Drives.conf │ ├── job # задания │ │ ├── backup-bareos-fd.conf │ │ ├── BackupCatalog.conf │ │ └── eyh.conf # │ ├── jobdefs │ │ ├── DefaultJob.conf │ │ └── eyh.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 │ │ ├── Daily.conf │ │ ├── Weekly.conf │ │ ├── WeeklyCycleAfterBackup.conf │ │ └── WeeklyCycle.conf │ ├── storage │ │ ├── eyh.conf │ │ ├── File.conf │ │ └── Restore.conf │ └── user ├── bareos-dir-export │ └── client │ └── eyh │ └── bareos-fd.d │ └── director │ └── bareos-dir.conf ├── bareos-fd.d │ ├── client │ │ └── myself.conf │ ├── director │ │ ├── bareos-dir.conf │ │ └── bareos-mon.conf │ └── messages │ └── Standard.conf ├── bareos-sd.d │ ├── device │ │ ├── eyh.conf │ │ ├── FileStorage.conf │ │ └── Restore.conf │ ├── director │ │ ├── bareos-dir.conf │ │ └── bareos-mon.conf │ ├── messages │ │ └── Standard.conf │ └── storage │ └── bareos-sd.conf └── bconsole.conf |
Размещение бэкапов Bareos Storage Daemon
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Сервер есть, он работает, но ничего не делает и у него нет места куда бы положить наши бэкапы. За размещение файлов отвечает демон bareos-sd /etc/bareos/bareos-sd.d/ - каталог конфигов bareos-sd /etc/bareos/bareos-sd.d/device/FileStorage.conf /etc/bareos/bareos-sd.d/director/bareos-dir.conf /etc/bareos/bareos-dir.d/storage/File.conf По дефолту пулы данных располагаются в /var/lib/bareos/storage Конфигурация самих пулов располагается в конфигах Bareos Director: /etc/bareos/bareos-dir.d/pool/Differential.conf /etc/bareos/bareos-dir.d/pool/Full.conf /etc/bareos/bareos-dir.d/pool/Incremental.conf /etc/bareos/bareos-dir.d/pool/Scratch.conf Иногда возникает необходимость вынести Storage Daemon на отдельный сервер, или добавить дополнительный Storage Pool расположенный на другом сервере. Для работы с обычными дисковыми накопителями нужно установить соответствующий бэкенд: пакет bareos-sd — для Centos, bareos-storage — для Debian, или Ubuntu. apt install bareos-storage - установка на debian |
Пример настройки на отдельном сервере Storage Daemon
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 |
Конфигурируем Device на стороне Storage Daemon: # cat /etc/bareos/bareos-sd.d/device/NewStorage.conf Device { Name = NewStorage Media Type = File Archive Device = /path/to/your/storage/mount/directory LabelMedia = yes; # lets Bareos label unlabeled media Random Access = yes; AutomaticMount = yes; # when device opened, read it RemovableMedia = no; AlwaysOpen = no; Description = "Your device description here." } Теперь, исходя из того, что Device имеет имя “NewStorage”, а Bareos Director — дефолтное “bareos-dir”, следующий конфиг: # cat /etc/bareos/bareos-sd.d/director/bareos-dir.conf Director { Name = bareos-dir Password = "<some_password_hash>" Description = "Director, who is permitted to contact this storage daemon." } расположенный на стороне Storage Daemon, нужно разместить на стороне Bareos Director и привести к следующему виду: # cat /etc/bareos/bareos-dir.d/storage/NewStorage.conf Storage { Name = NewStorage Address = 10.0.0.12 # N.B. Use a FQDN or IP here Password = "<some_password_hash>" Device = NewStorage Media Type = File } Обновить конфигурацию Bareos Director: # bconsole * reload * exit и перезапустить Storage Daemon для обновления конфигурации: systemctl restart bareos-sd Проверяем что у нас получилось bconsole status storage |
Расписание и задания
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
Каждое из заданий может быть прикреплено к расписанию (Shedule) и частично предопределено в шаблоне (Job Definitions). Задания так же могут ссылаться на Fileset’ы, где, например, для группы различных заданий предопределены какие-либо параметры. Задания могут быть ни прикреплены к расписанию (запускаются только вручную через веб-интерфейс, или консоль), ни ссылаться на Fileset’ы. Некоторые Fileset’ы создаются автоматически при установке Bareos Director: /etc/bareos/bareos-dir.d/fileset/Catalog.conf /etc/bareos/bareos-dir.d/fileset/LinuxAll.conf /etc/bareos/bareos-dir.d/fileset/SelfTest.conf /etc/bareos/bareos-dir.d/fileset/Windows\ All\ Drives.conf Дефолтные задания на резервное копирование: /etc/bareos/bareos-dir.d/job/backup-bareos-fd.conf /etc/bareos/bareos-dir.d/job/BackupCatalog.conf /etc/bareos/bareos-dir.d/job/RestoreFiles.conf Дефолтное расписание выглядит следующим образом: /etc/bareos/bareos-dir.d/schedule/WeeklyCycle.conf /etc/bareos/bareos-dir.d/schedule/WeeklyCycleAfterBackup.conf Создадим ежедневное: # cat /etc/bareos/bareos-dir.d/schedule/Daily.conf Daily.conf Schedule { # name (обязательно) Name = "Daily" # run time # допустимы множество опций, # можно создавать несколько в виде "Run =" times # но для простоты будем запускать # каждый день один раз в день в 21:10 Run = daily at 21:00 } и еженедельное расписание: # cat /etc/bareos/bareos-dir.d/schedule/Weekly.conf Schedule { Name = "Weekly" Description = "This schedule creates weekly backup." # создаем Full бэкап в пул "Full" каждую субботу в 21:00 Run = Level=Full Pool=Full sun at 21:00 } !!! Собственно тут описывается что мы там бэкапим Создадим Fileset: # cat /etc/bareos/bareos-dir.d/fileset/MyFileset.conf FileSet { # name (required) Name = "MyFileset" # include directory Include { Options { # считаем контрольную сумму для всех файлов из fileset # можно использовать MD5/SHA1. Это полезно для длительного # хранения, однако создает дополнительную нагрузку на CPU: # SHA1 надежней, но в большинстве случаев достаточно менее # требовательного к ресурсам процессора MD5 Signature = MD5 # запаковывать каждый файл из fileset # наиболее используемые: LZ4/GZIP (см. мануал для остальных # возможных опций). LZ4 - наиболее быстрый для запаковывания # и распаковывания. Compression = LZ4 # noatime - yes: Если ваша система поддерживает O_NOATIME # Bareos откроет все файлы, скопированные с этой опцией. # Это позволяет читать файл без обновления inode atime # (а также без обновления inode ctime). Если опция не # поддерживается, то будет автоматически игнорирована. noatime = yes # Указанные буквы опций используются при запуске # Verify Level = Catalog, а также задания уровня # DiskToCatalog. Буквы параметров могут быть любыми # комбинациями из следующих: # # i - compare the inodes # p - compare the permission bits # n - compare the number of links # u - compare the user id # g - compare the group id # s - compare the size # a - compare the access time # m - compare the modification time (st_mtime) # c - compare the change time (st_ctime) # d - report file size decreases # 5 - compare the MD5 signature # 1 - compare the SHA1 signature # A - Only for Accurate option, allows to backup the file Verify = pin5 } # бэкапим определенные директории # (указывать без обратных slash'ей) # File = "/path/to/your/folder/" # # или: # # File = "/path/to/your/folder/"%n # с опцией, задавая таким образом конечную папку с помощью # имени задачи (Job Name). # # Возможно использовать: # %c = Client’s name # %d = Director’s name # %e = Job Exit code (OK, Error, ...) # %h = Client address # %i = Job Id # %j = Unique Job name # %l = Job level # %n = Job name # %r = Recipients # %s = Since time # %t = Job type (e.g. Backup, ...) # %v = Read Volume name (Only on director side) # %V = Write Volume name (Only on director side) File = "/path/to/your/folder/" } } |
Задания:
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
Задания бывают следующих типов: Backup, Restore, Verify, Admin, Migrate, Copy, Consolidate. Но для примера рассмотрим только Backup и Restore (информацию об остальных можно найти в официальной документации). Для начала создадим шаблон задачи (Job Definition): # cat /etc/bareos/bareos-dir.d/jobdefs/MyJobdef.conf JobDefs { Name = "MyJobdef" # Тип определяемого Job Definition (Backup, Restore, Verify...) Type = Backup # Собирать данные со следующего клиента: Client = clientname # Раскоментируйте, если нужно предопределить Fileset, но можно на него и не ссылаться. # Например: # FileSet = "MyFileset" # Закрепить Job Definition за следующим расписанием: Schedule = "Weekly" # Перед и после выполнения задания возможен запуск скриптов: # ClientRunBeforeJob - запустит скрипт перед выполнением Job на # стороне клиента, # RunBeforeJob - запустит скрипт перед выполнением Job на # стороне Bareos Director. # ClientRunAfterJob - запустит скрипт после выполнения Job на # стороне клиента, # RunAfterJob - аналогично после Job на стороне Bareos Director. # Таким образом, сначала запустится RunBeforeJob (например, это # какой-либо скрипт для подготовки данных к бэкапу), # непосредственно само резервное копирование (или восстановление, если # Type = Restore) и по завершению - RunAfterJob (например, # скрипт, который удалит подготовленные для бэкапа данные) # # Например: # # ClientRunBeforeJob = "/path/to/your/script/script.sh" # # Как и в Fileset, возможно так же передавать различные # параметры: # ClientRunBeforeJob = "/path/to/script.sh %n" # С каким storage работать: Storage = File # Preset, определяющий как и какие сообщения собирать с # клиентов. В большинстве случаев - стандартного достаточно. Messages = Standard # С каким пулом работать: например, для Full backups - Full. Pool = Full # Приоритет задачи: чем ниже, тем раньше других будет выполнена, # если за один интвервал времени запланировано несколько Priority = 10 # Вряд ли придется менять это значение, обычно оставляется # по дефолту. Это файл начальной загрузки. Он содержит # информацию ASCII, которая позволяет точно определить, какие # файлы должны быть восстановлены, какой объем они находятся и # где они находятся на томе. Это относительно компактная форма # указания информации, является удобочитаемой и может быть # отредактирована любым текстовым редактором. Write Bootstrap = "/var/lib/bareos/%c.bsr" # Указывает на то, что Full Backups записываются в пул "Full"; # Differential - в Differential и тд. Для примера так же можно # настроить запись Full Backups в созданный выше NewPool: # Full Backup Pool = NewPool Full Backup Pool = Full Differential Backup Pool = Differential Incremental Backup Pool = Incremental } И далее создадим непосредственно саму задачу, ссылающийся на созданный Job Definition: # cat /etc/bareos/bareos-dir.d/job/MyJob.conf Job { Name = "MyJob" Description = "Backup files from clientname" JobDefs = "MyJobdef" Type = Backup Level = Full # При Accurate режиме демон файлов точно знает, какие файлы # присутствовали после последней резервной копии. Таким # образом, он способен обрабатывать удаленные или # переименованные файлы. # При восстановлении FileSet для заданной даты (включая «самые # последние») Bareos может восстановить именно файлы и каталоги, # существовавшие во время последней резервной копии до этой # даты: удаленные файлы будут действительно удалены, а # переименованные будут переименованы должным образом. # При создании резервных копий VirtualFull рекомендуется # использовать точный режим (Accurate Mode), иначе VirtualFull # может содержать уже удаленные файлы. # Однако использование точного режима также имеет недостатки: # FileDaemon должен хранить данные о всех файлах в памяти. # Итак, если у вас нет достаточной памяти, резервная копия может # быть очень медленной или неудачной. Для 500 000 файлов # (типичная desktop Linux-система) потребуется около 64 мегабайт # ОЗУ на вашем File Daemon для хранения необходимой информации. Accurate = yes # Ссылаемся на созданное выше описание файлов (Fileset). FileSet = "MyFileset" # Привязываем задачу к еженедельному расписанию "Weekly" Schedule = "Weekly" # Собираем данные с клиента "clientname" Client = "clientname" # Если требуется, то можно переопределить: # ClientRunBeforeJob = "/path/to/script.sh" # ClientRunAfterJob = "/path/to/script.sh" # Отправляет bootstrap для аварийного восстановления. # Укажите здесь необходимого адресата, если требуется Write Bootstrap = "|/usr/bin/bsmtp -h localhost -f \"\(Bareos\) \" -s \"Bootstrap for Job %j\" root@localhost" # Приоритет. Дефолтные задания имеют приоритет 11. Priority = 9 } Если какие-то из параметров определены дважды (например: в Fileset и Job, или в Job Definition и Job), то параметры в Job переопределит (override) ранее заданные. Выставляем права на все созданные конфигурации: chown bareos.bareos /etc/bareos/bareos-dir.d/schedule/Daily.conf chown bareos.bareos /etc/bareos/bareos-dir.d/schedule/Weekly.conf chown bareos.bareos /etc/bareos/bareos-dir.d/fileset/MyFileset.conf chown bareos.bareos /etc/bareos/bareos-dir.d/jobdefs/MyJobdef.conf chown bareos.bareos /etc/bareos/bareos-dir.d/job/MyJob.conf Применяем изменения: bconsole reload Запускаем задание MyJob: bconsole run job=MyJob Смотрим ошибки и правим файлы mess |
Incrimential Backups
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
Использование некоторых флагов позволит копировать только те файлы, которые были изменены. Создадим fileset для Incrimential Backup’ов: # cat /etc/bareos/bareos-dir.d/fileset/IncrimentialFileset.conf FileSet { Name = "IncrimentialFileset" Description = "Incrimential Data fileset" Include { Options { # Accurate options, использование которых позволяет # определить Bareos, какие файлы копировать: # i - compare the inodes # p - compare the permission bits # n - compare the number of links # u - compare the user id # g - compare the group id # s - compare the size # a - compare the access time # m - compare the modification time (st_mtime) # c - compare the change time (st_ctime) # d - report file size decreases # 5 - compare the MD5 signature # 1 - compare the SHA1 signature # В большинстве случаев опции "ms" вполне достаточно для # копирования новых/измененных, но если требуется учитывать # дату изменения файла, то "mcs". Accurate = ms Signature = MD5 Compression = LZ4 } File = "/path/to/directory" } } Теперь создадим Base Job, которую можно выполнять по расписанию для копирования всех файлов один раз в месяц, или год, а можно и вовсе запускать разово вручную, если копировать в отдельный пул, авто очистка на котором отключена: # cat /etc/bareos/bareos-dir.d/job/BaseJob.conf Job { Name = "BaseJob" Description = "Base backup" # Задаем базовый (Base) level: Level = Base Pool = Incremental Storage = File Type = Backup FileSet = "IncrimentialFileset" Client = "clientname" Messages = Standard # Раскоментируйте, если требуется выполнять Base Job по # расписанию # Schedule = "Monthly" Write Bootstrap = "|/usr/bin/bsmtp -h localhost -f \"\(Bareos\) \" -s \"Bootstrap for Job %j\" root@localhost" Priority = 11 } И далее задание для инкрементальных бэкапов, которое уже будем выполнять по расписанию: # cat /etc/bareos/bareos-dir.d/job/IncrimentialJob.conf Job { Name = "IncrimentialJob" Description = "Incrimential data backup" # Задает Base Job: Base = "BaseJob" Pool = Incremental Storage = File Type = Backup Level = Incremental FileSet = "IncrimentialFileset" Schedule = "Daily" Client = "clientname" Messages = Standard Write Bootstrap = "|/usr/bin/bsmtp -h localhost -f \"\(Bareos\) \" -s \"Bootstrap for Job %j\" root@localhost" Priority = 11 } Выставляем права, перезагружаем конфиг Bareos Director и запускаем Base Job: chown bareos.bareos /etc/bareos/bareos-dir.d/fileset/IncrimentialFileset.conf chown bareos.bareos /etc/bareos/bareos-dir.d/job/BaseJob.conf chown bareos.bareos /etc/bareos/bareos-dir.d/job/IncrimentialJob.conf Применяем изменения: bconsole * reload Запускаем задание: run job=BaseJob И далее можно запустить задачу на создание инкрементального бэкапа: run job=IncrimentialJob В принципе, достаточно выполнять по расписанию только IncrimentialJob: если не будет найден полный бэкап, то он автоматически создастся. Добавлять BaseJob в расписание не обязательно — это лишь для наглядности данного примера. |