среда, 20 февраля 2013 г.

Резервное копирование данных с помощью Bacula

Bacula является ведущим решением в области резервного копирования и восстановления данных среди opensource проектов. На первый взгляд кажущаяся сложность в освоении растворяется по мере изучения принципов работы этой системы. Ну что же, вспомним знаменитое "админы делятся на две группы - тех, кто ещё не делают бекапы, и тех, кто уже делает", и приступим к процессу присоединения ко вторым.


Итак, что же такое Bacula и как её едят. Bacula - клиент-серверная система для централизованного управления резервным копированием, восстановлением и проверкой данных по сети. Клиенты имеются почти под все популярные ОС.

Bacula состоит из следующих компонентов(сервисов):
  • Director управляет резервированием, восстановлением, верификацией и архивированием данных(заметьте, именно "управляет").
  • Storage отвечает за чтение и запись данных на ленточные накопители, жесткие диски, оптические диски и любые другие физические носители.
  • File(bacula client) устанавливается непосредственно на "бекапируемую" машину и предоставляет файловые атрибуты и резервируемые данные сервису Storage(предоставляет их по требованию Director).
  • Catalog - база данных(MySQL, PostgreSQL или SQLlite), в которой Bacula хранит записи обо всех используемых томах, всех выполненных заданиях и сохраненных файлах.
  • Console - программа для взаимодействия администратора с Bacula Director. Существует в двух видах: текстовая консоль bconsole и с графическим интерфейсом Bacula Administration Tool(BAT).
  • Tray Monitor представляет из себя программу, позволяющую следить за текущим состоянием сервисов Director, Storage и File. Работает только в UNIX системах.
Прежде, чем приступить к непосредственной правке конфигов, обрисуем себе задачу резервного копирования. Пусть у нас в наличии имеется два сервера - сервер Windows из бухгалтерии и файловый сервер на базе Linux с общими документами предприятия. Производить резервное копирование мы будем следующем образом: каждое первое воскресенье производится полный бекап, с понедельника по пятницу будем делать инкрементный, в остальные воскресенья - дифференциальный бекап. В субботу резерное копирование производится не будет. Копии полных бекапов подвергаются ротации(перезаписываются) каждые два месяца, копии дифференциальных - ежемесячно, инкрементных - еженедельно. Также, еженедельно мы будем выполнять резервное копирование каталога(базы данных) bacula.

Установку и настройку компонент Director, Storage, File и Console мы будем производить на CentOS 6. Ещё один клиент будет установлен в Windows. В качестве базы данных для Bacula будем использовать MySQL. Строго говоря, компоненты(Director, Storage, MySQL) лучше устанавливать на разные сервера - всё зависит от нагрузок и имеющегося в наличие оборудования. В данном случае будем рассматривать "всё в одном", разница только в адресах, которые будут указаны в директивах конфигурационных файлов. Компоненты Console и Tray Monitor для удобства лучше установить на компьютере администратора(если у вас линукс как десктоп, конечно). И ещё, для более понятного восприятия всех параметров условимся называть Windows сервер server-buh, Linux сервер server-common, и сервер с установленными MySQL назовём server-backup. Ну что ж, приступим.

Установим bacula:

[root@server-backup ~]# yum install bacula-common bacula-storage-mysql bacula-director-common bacula-client bacula-storage-common bacula-director-mysql bacula-console
Консоль мы дополнительно установим и на сервере, она там не помешает.

Теперь установим MySQL и выполним действия по первоначальной настройке(вы можете смело пропустить этот пункт, если у вас есть готовый рабочий сервер MySQL или вы знаете как это делать):

[root@server-backup ~]# mysql mysql-server
[root@server-backup ~]# service mysqld start
[root@server-backup ~]# mysql_secure_installation
.
.
Enter current password for root (enter for none):
.
.
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
.
Remove anonymous users? [Y/n] Y
.
Disallow root login remotely? [Y/n] Y
.
Remove test database and access to it? [Y/n] Y
.
.
Reload privilege tables now? [Y/n] Y
.
.
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!
[root@server-backup ~]# chkconfig mysqld on

Теперь воспользуемся скриптами, идущими в комплекте с bacula, для первоначальной конфигурации базы(по запросу вводить пароль root от MySQL):

[root@server-backup ~]# cd /usr/libexec/bacula/
[root@server-backup bacula]# ./grant_mysql_privileges -p
[root@server-backup bacula]# ./create_mysql_database -p

Теперь создадим пароль пользователю bacula MySQL:

[root@server-backup bacula]# mysql -u root -p
Enter password:
mysql>SET PASSWORD FOR bacula@localhost = PASSWORD('bacula');
mysql>SET PASSWORD FOR bacula@"%" = PASSWORD('bacula');

На этом приготовления закончены, перейдём к правке конфигурационных файлов bacula, предварительно отметив, что все они состоят из объектов под названием "ресурсы".

Bacula Director

Все свои настройки Director хранит в конфигурационном файле bacula-dir.conf. Как было сказано выше, все конфигурационные файлы состоят из ресурсов. Файл bacula-dir.conf состоит из следующих ресурсов:
  • Director - определяет все основные характеристики демона Director как сетевого приложения(имя, пароль, рабочий каталог и т.д.). Должен быть в единственном экземпляре в файле bacula-dir.conf.
  • Job - определяет задание для выполнения Bacula-ой. Именно этот ресурс указывает что, куда, как и когда будет выполнятся.
  • JobDefs - необязательный ресурс, предоставляет настройки по-умолчанию для ресурса Job.
  • Schedule - задаёт расписание выполнения задания.
  • FileSet - задаёт набор файлов, подлежащих резервному копированию.
  • Client - этот ресурс определяет клиента, файлы которого будут резервироваться или восстанавливаться.
  • Storage - используется для указания хранилища, в которое будут складываться резервные копии.
  • Pool - определяет набор томов(кассеты или файлы) в которые будут записываться резервируемые данные.
  • Catalog - задаёт параметры подключения к базе данных(MySQL, PostgreSQL или SQLlite).
  • Messages - определяет как обрабатывать сообщения(информационный, об ошибках) и куда их направлять.
  • Console - необязательный ресурс, применяется для разграничения прав доступа пользователей к bacula, в частности будет использоваться для показа статуса Director в tray-monitor.
Как мы видим, в файле bacula-dir.conf будет содержаться большое количество ресурсов, и для того, чтобы он был более удобочитаемым, мы вынесем все однотипные ресурсы в отдельные файлы. Итак, bacula-dir.conf:

Director {
#имя ресурса Director(это же имя будет в ресурсах Director всех сервисов)
Name = bacula-dir
#порт, на котором демон Director слушает запросы на соединение от Console
DIRport = 9101
#заранее подготовленный набор инструкций для команды query Console
QueryFile = "/etc/bacula/query.sql"
#рабочий каталог демона Director
WorkingDirectory = "/var/spool/bacula"
#каталог, в котором находится pid-файл
PidDirectory = "/var/run"
#максимальное количество одновременных заданий
Maximum Concurrent Jobs = 3
#пароль для соединения с Console(аналогичный пароль в ресурсе Director сервиса Console)
Password = "password-dir"
#куда направлять сообщения от Director
Messages = Standard
}

Catalog {
#имя ресурса
Name = BaculaBase
#имя базы
dbname = bacula
#пользователь, от имени которого соединяться с базой
user = bacula
#пароль пользователя
password = "bacula"
#адрес базы данных
DB Address = <database_ip>
#порт базы
DB Port = 3306
}

Messages {
#имя ресурса
Name = Standard
#команда для отправки сообщений
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
#куда отправлять сообщение
mail = username@domain.net = all, !skipped
#отправлять сообщение в консоль bacula (bconsole)
console = all, !skipped, !saved
#какие сообщения записывать в каталог(базу данных)
catalog = all, !skipped, !saved
#направлять сообщение в указанный файл
append = "/var/spool/bacula/log" = all, !skipped
}

#этот ресурс будет нужен для подключения bacula-tray-monitor
Console {
#имя Console(аналогичное имя должно быть в ресурсе Monitor сервиса Tray Monitor)
Name = bacula-mon
#пароль для подключения монитора tray monitor
Password = "password-mon"
#список команд, доступных для выполнения консолью
CommandACL = status, .status
}

#список файлов, в которые вынесены однотипные ресурсы
@/etc/bacula/bacula-dir/bacula-clients.conf
@/etc/bacula/bacula-dir/bacula-filesets.conf
@/etc/bacula/bacula-dir/bacula-storages.conf
@/etc/bacula/bacula-dir/bacula-pools.conf
@/etc/bacula/bacula-dir/bacula-schedules.conf
@/etc/bacula/bacula-dir/bacula-jobs.conf
Знак "@" позволяет подключать файл в конфигурационные файлы bacula, чем мы и воспользовались. Теперь обо всех подключённых файлах по порядку.

bacula-clients.conf:
Client {
#имя ресурса(используется в ресурсе Job)
Name = server-buh-fd
#адрес клинта
Address = <server-buh_ip>
#порт, по которому связываться с клиентом
FDPort = 9102
#имя ресурса Catalog
Catalog = BaculaBase
#пароль для установления связи с клиентом(такой же пароль в ресурсе Director на клиенте)
Password = "password-fd"
}

Client {
Name = server-backup-fd
Address = <server-backup_ip>
FDPort = 9102
Catalog = BaculaBase
Password = "password-fd"
}

Client {
Name = server-common-fd
Address = <server-common_ip>
FDPort = 9102
Catalog = BaculaBase
Password = "password-fd"
}

bacula-filesets.conf:
FileSet {
#имя ресурса(используется в ресурсе Job)
Name = "server-buh-files"
Include {
Options {
#вычислять цифровую подпись для всех сохраненных файлов
signature = MD5
#сжимать все сохранённые файлы
compression = GZIP7
#не обновлять время доступа к файлам при резервном копировании
noatime = yes
#шаблон для каталогов
WildDir = "*RECYCLE*"
WildDir = "*System Volume Information*"
#исключить всё, что соответствует шаблонам
exclude = yes
}
#список файлов, подлежащих резервированию
File = "D:/"
}
}

FileSet {
Name = "server-backup-files"
Include {
Options {
signature = MD5
compression = GZIP7
noatime = yes
#сохранять UNIX ACL-ы
aclsupport = yes
}
File = "/home/mysqldump.sql"
}
}

FileSet {
Name = "server-common-files"
Include {
Options {
signature = MD5
compression = GZIP7
noatime = yes
aclsupport = yes
}
File = "/docs"
}
}

bacula-storages.conf:
Storage {
#имя ресурса(используется в ресурсе Job)
Name = server-buh-storage
#адрес хранилища
Address = <storage_ip>
#порт для соединения с демоном Storage для выполнения задания
SDPort = 9103
#пароль для подключения к сервису Storage(этот же пароль должен быть в ресурсе Director сервиса Storage)
Password = "password-sd"
#имя ресурса Device демона Storage
Device = server-buh-device
#тип носителя информации хранилища
#(точно такой должен быть в ресурсе Device c именем service-buh-device сервиса Storage)
Media Type = server-buh-files
#максимальное число одновременных заданий
Maximum Concurrent Jobs = 2
}

Storage {
Name = server-common-storage
Address = <storage_ip>
SDPort = 9103
Password = "password-sd"
Device = server-common-device
Media Type = server-common-files
Maximum Concurrent Jobs = 2
}

Storage {
Name = server-backup-storage
Address = <storage_ip>
SDPort = 9103
Password = "password-sd"
Device = server-backup-device
Media Type = server-backup-files
Maximum Concurrent Jobs = 2
}

bacula-pools.conf:
Pool {
#имя ресурса(используется в ресурсе Job или Schedule)
Name = server-buh-Daily
#тип пула
Pool Type = Backup
#шаблон имени файла с резервируемыми данными
LabelFormat = "server-buh-Daily-"
#повторно использовать тома
Recycle = yes
#начинать повторное использование с самых старых
Recycle Oldest Volume = yes
#автоочистка
AutoPrune = yes
#срок жизни записей о томе в базе данных
Volume Retention = 5 days
#максимальное количество томов в пуле
Maximum Volumes = 5
#максимальное количество заданий в одном томе
Maximum Volume Jobs = 1
}

Pool {
Name = server-buh-Weekly
Pool Type = Backup
LabelFormat = "server-buh-Weekly-"
Recycle = yes
Recycle Oldest Volume = yes
AutoPrune = yes
Volume Retention = 4 weeks
Maximum Volumes = 4
Maximum Volume Jobs = 1
}

Pool {
Name = server-buh-Monthly
Pool Type = Backup
LabelFormat = "server-buh-Monthly-"
Recycle = yes
Recycle Oldest Volume = yes
AutoPrune = yes
Volume Retention = 1 month
Maximum Volumes = 2
Maximum Volume Jobs = 1
}

Pool {
Name = server-common-Daily
Pool Type = Backup
LabelFormat = "server-common-Daily-"
Recycle = yes
Recycle Oldest Volume = yes
AutoPrune = yes
Volume Retention = 5 days
Maximum Volumes = 5
Maximum Volume Jobs = 1
}

Pool {
Name = server-common-Weekly
Pool Type = Backup
LabelFormat = "server-common-Weekly-"
Recycle = yes
Recycle Oldest Volume = yes
AutoPrune = yes
Volume Retention = 4 weeks
Maximum Volumes = 4
Maximum Volume Jobs = 1
}

Pool {
Name = server-common-Monthly
Pool Type = Backup
LabelFormat = "server-common-Monthly-"
Recycle = yes
Recycle Oldest Volume = yes
AutoPrune = yes
Volume Retention = 1 month
Maximum Volumes = 2
Maximum Volume Jobs = 1
}

Pool {
Name = server-backup-Weekly
Pool Type = Backup
LabelFormat = "server-backup-Weekly-"
Recycle = yes
Recycle Oldest Volume = yes
AutoPrune = yes
Volume Retention = 2 weeks
Maximum Volumes = 2
Maximum Volume Jobs = 1
}

Pool {
Name = Default
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 2 days
}
Стоит отметить, что смена параметров в пулах и перезапуск демона Director применят их только для не созданных томов. Для уже созданных томов(к примеру, в процессе эксперимента вы меняете интервалы или дни выполнения бекапов) вам необходимо выполнить update в консоли bacula.

bacula-schedules.conf:
Schedule {
#имя ресурса(используется в ресурсе Job)
Name = "server-buh_files"
#время выполнения(также можно переопределять уровни, пулы и т.д.)
Run = Level=Full Pool=server-buh-Monthly 1st sun at 18:00
Run = Level=Differential Pool=server-buh-Weekly 2nd-5th sun at 18:00
Run = Level=Incremental Pool=server-buh-Daily mon-fri at 18:00
}

Schedule {
Name = "server-fs_files"
Run = Level=Full Pool=server-common-Monthly 1st sun at 18:00
Run = Level=Differential Pool=server-common-Weekly 2nd-5th sun at 18:00
Run = Level=Incremental Pool=server-common-Daily mon-fri at 18:00
}

Schedule {
Name = "server-backup_mysql"
Run = Level=Full Pool=server-backup-Weekly sun at 05:00
}

bacula-jobs.conf:
JobDefs {
#имя ресурса
Name = "DefaultJob"
#тип задания
Type = Backup
#куда направлять сообщения
Messages = Standard
#приоритет задания
Priority = 10
#куда записывать Bootstrap файл
Write Bootstrap = "/backups/bacula/%n.bsr"
#пул по-умолчанию
Pool = Default
}

Job {
Name = "server-buh-backup"
JobDefs = "DefaultJob"
#имя клиента
Client = "server-buh-fd"
#набор файлов
FileSet="server-buh-files"
#куда складывать
Storage = "server-buh-storage"
#время выполнения
Schedule = "server-buh-files"
#активировать автоматическое выполнение
Enabled = yes
#перезапускать неудавшиеся задания высшего уровня
Rerun Failed Levels = yes
}

Job {
Name = "server-backup-backup"
JobDefs = "DefaultJob"
Client = "server-backup-fd"
FileSet="server-backup-files"
Storage = "server-backup-storage"
Schedule = "server-backup-files"
Enabled = yes
Rerun Failed Levels = yes
#выполнить перед заданием
ClientRunBeforeJob = "/home/mysqlbackup root Bynth9athtywbZ@"
#выполнить после задания
ClientRunAfterJob = "/bin/rm -rf /home/mysqldump.sql"
}

Job {
Name = "server-common-backup"
JobDefs = "DefaultJob"
Client = "server-common-fd"
FileSet="server-common-files"
Storage = "server-common-storage"
Schedule = "server-common-files"
Enabled = yes
Rerun Failed Levels = yes
}

#этот ресурс нужен только восстановления файлов
Job {
Name = "RestoreFiles"
Type = Restore
Client=server-backup-fd
FileSet=server-buh-files
Storage = server-buh-storage
Pool = Default
Messages = Standard
Where = /backups/restores
}

Bacula Storage

Конфигурационный файл Bacula Storage bacula-sd.conf также состоит из ресурсов:
  • Storage - содержит все основные настройки демона Storage.
  • Director - определяет параметры подключения к демону Director. Возможно несколько экземпляров в одном файле - необходимо для мониторинга через bacula-tray.
  • Device - определяет характеристики накопителя.
  • Messages - определяет как обрабатывать сообщения(информационный, об ошибках) и куда их направлять.

Storage {
Name = bacula-sd
SDPort = 9103
WorkingDirectory = "/var/spool/bacula"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
}

Director {
#имя ресурса Director сервиса Director
Name = bacula-dir
#пароль в ресурсе Storage сервиса Director
Password = "password-sd"
}

#ресурс для мониторинга с помощью Tray Monitor
Director {
Name = bacula-mon
Password = "password-sd-mon"
Monitor = yes
}

Device {
#имя ресурса в ресурсе Storage сервиса Director
Name = server-buh-device
#тип хранилища(должно совпадать с типом в ресурсе Storage с именем server-buh-device сервиса Director)
Media Type = server-buh-files
#имя каталога, куда сохранять резервные копии
Archive Device = /backups/bacula/server-buh
#автоматически маркировать тома
LabelMedia = yes;
Random Access = Yes;
#Монтировать автоматически
AutomaticMount = yes;
#Наше устройство не съёмное
RemovableMedia = no;
}

Device {
Name = server-fs-device
Media Type = server-common-files
Archive Device = /backups/bacula/server-fs
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
}

Device {
Name = server-backup-device
Media Type = server-backup-files
Archive Device = /backups/bacula/server-backup
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
}

Messages {
Name = Standard
director = bacula-dir = all
}
Заметьте, что несмотря на то, что все типы хранилищ одинаковые, все параметры MediaType должны быть различны, даже если у вас все типы хранилищ - файловые. Это связано с тем, что bacula хранит только записи MediaType в базе(касательно устройств хранения) и при восстановлении возможны проблемы, поскольку bacula выберет первое доступное устройство. Подробнее здесь.

Bacula Client(File daemon)

Конфигурационный файл Bacula Client bacula-fd.conf состоит из следующих ресурсов:
  • Director - определяет параметры подключения к демону Director. Возможно несколько экземпляров в одном файле - необходимо для мониторинга через bacula-tray.
  • FileDaemon - содержит все основные настройки демона File.
  • Messages - определяет как обрабатывать сообщения(информационный, об ошибках) и куда их направлять.
Здесь будет приведён пример только одного клиента, потому как разница у них только в директиве Name в ресурсе FileDaemon - у каждого своё имя. Итак, bacula-fd.conf:
Director {
#имя ресурса Director сервиса Director
Name = bacula-dir
#пароль в ресурсе Client сервиса Director
Password = "password-fd"
}

#ресурс для мониторинга с помощью Tray Monitor
Director {
Name = bacula-mon
Password = "password-fd-mon"
Monitor = yes
}

FileDaemon {
#имя ресурса
Name = server-backup-fd
#порт для подключения
FDport = 9102
WorkingDirectory = /var/spool/bacula
Pid Directory = /var/run
Maximum Concurrent Jobs = 2
}

Messages {
Name = Standard
director = bacula-dir = all, !skipped, !restored
}

Bacula Console

Как было сказано выше, Bacula Console может быть двух видов: текстовая bconsole(только nix-системы) и графическая BAT.
Конфигурационный файл текстовой консоли bconsole.conf состоит из двух ресурсов:
  • Director - определяет параметры подключения к демону Director. Возможно несколько экземпляров в одном файле - необходимо для мониторинга через bacula-tray.
  • Console - опциональный ресурс, который служит для использования ACL-ов(несколько пользователей с разными правами) .
В нашем случае разделять права доступа мы не будем, поэтому наш файл bconsole.conf имеет самый примитивный вид:

Director {
#имя ресурса Director сервиса Director
Name = bacula-dir
#порт, для подключения к сервису Director
DIRport = 9101
#адрес сервиса Director
address = <director_ip>
#пароль для соединения Console с сервисом Director
Password = "password-dir"
}

Конфигурационный файл графического инструмента Bacula Admin Tool (BAT) ничем не отличается от bconsole, за исключением названия - bat.conf. Его содержимое полностью аналогично bconsole.conf.

Bacula Tray Monitor

Tray Monitor устанавливается на Unix-десктоп для удобного мониторинга происходящих ситуаций на сервисах Director, File, Storage. Представляет из себя апплет для среды Gnome/KDE. Конфигурационный файл tray-monitor.conf состоит из таких ресурсов:
  • Monitor - определяет атрибуты монитора, работающего в сети. Параметры, определённые здесь, должны быть настроены в дополнительных ресурсах Director конфигурационных файлов сервисов Storage и Client и в ресурсе Console конфигурационного файла Director.
  • Director - определяет параметры подключения к сервису Director для его мониторинга.
  • Client - определяет параметры подключения к сервису Client для его мониторинга.
  • Storage - определяет параметры подключения к сервису Storage для его мониторинга.

Вот как выглядит простенький конфигурационный файл tray-monitor.conf:
Monitor {
#это имя должно быть в ресурсе Console сервиса Director и ресурсах Director сервисов Storage и File
Name = bacula-mon
#пароль в ресурсе Console сервиса Director
Password = "password-mon"
RefreshInterval = 5 seconds
}

Client {
#имя, отображаемое в Tray Monitor
Name = server-buh
Address = <server-buh_ip>
FDPort = 9102
#пароль в ресурсе Director сервиса File(тот который с директивой Monitor=yes)
Password = "password-fd-mon"
}

Client {
#имя, отображаемое в Tray Monitor
Name = server-backup
Address = <server-backup_ip>
FDPort = 9102
Password = "password-fd-mon"
}

Client {
#имя, отображаемое в Tray Monitor
Name = server-common
Address = <server-backup_ip>
FDPort = 9102
Password = "password-fd-mon"
}

Storage {
#имя, отображаемое в Tray Monitor
Name = storage
Address = <storage_ip>
SDPort = 9103
#пароль в ресурсе Director сервиса Storage(тот который с директивой Monitor=yes)
Password = "password-sd-mon"
}

Director {
#имя ресурса Director сервиса Director
Name = bacula-dir
DIRport = 9101
address = <director_ip>
}
Для понимания взаимосвязей паролей и имен ресурсов есть наглядная картинка из официальной документации:


Напоследок, нам осталось запустить все компоненты. Но перед эти выполним проверку всех конфигурационных файлов на предмет ошибок:

[root@server-backup ~]# bacula-dir -t -c bacula-dir.conf
[root@server-backup ~]# bacula-sd -t -c bacula-sd.conf
[root@server-backup ~]# bacula-fd -t -c bacula-fd.conf
[root@server-backup ~]# bconsole -t -c bconsole.conf
[root@server-backup ~]# bat -t -c bat.conf
Вывод каждой должен быть пустой, иначе будет выдан отчёт о найденной ошибке.
Теперь добавим в автозагрузку наши сервисы:

[root@server-backup ~]# service bacula-dir start && service bacula-sd start && service bacula-fd start
[root@server-backup ~]# chkconfig bacula-dir on
[root@server-backup ~]# chkconfig bacula-sd on
[root@server-backup ~]# chkconfig bacula-fd on

Конечно же, самая полная информация по настройке содержится в официальной документации.
На этом всё. Берегите свою информацию ;)

6 комментариев:

  1. спасибо за подробную статью. Но есть важное замечание. Админы на самом деле делятся на ТРИ категории:

    1. Те, кто ЕЩЕ не делает бэкапов.
    2. Те, кто УЖЕ делает бэкапы.
    и 3. Те, кто только ДУМАЕТ, что делает бэкапы.

    Всегда проверяйте, нормально ли проходит восстановление из резервной копии

    ОтветитьУдалить
    Ответы
    1. Вы абсолютно правы, тестовое восстановление нужно проводить как минимум один раз в месяц

      Удалить
  2. Тоже развернул у себя на сервере инкрементное резервное копирование. http://plutov.by/post/incremental_backup

    ОтветитьУдалить
  3. Есть документация по Bacula на русском - https://www.backup-solutions.ru/chto-takoe-bacula-enterprise/.

    ОтветитьУдалить
  4. Merkur 20C Snow Peak Titanium Flask
    The Merkur 20C Snow titanium wedding band sets Peak Titanium Flask, ford focus titanium hatchback made in Solingen, Germany by buy metal online Solingen, provides a carbon steel frame that holds the weight of titanium car a standard used ford edge titanium razor.

    ОтветитьУдалить
  5. Сисадмину На Заметку: Резервное Копирование Данных С Помощью Bacula >>>>> Download Now

    >>>>> Download Full

    Сисадмину На Заметку: Резервное Копирование Данных С Помощью Bacula >>>>> Download LINK

    >>>>> Download Now

    Сисадмину На Заметку: Резервное Копирование Данных С Помощью Bacula >>>>> Download Full

    >>>>> Download LINK 9X

    ОтветитьУдалить