Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы / 6 / алвс лаб 6.docx
Скачиваний:
12
Добавлен:
28.11.2024
Размер:
578.7 Кб
Скачать

Практическая работа

1.Установите программу Bacula, следуя указаниям из лабораторной работы.

Параметры настройки возьмите из таблицы: Расположение Director

Машина server

Расположение Storage

Машина server

Расположение клиента

Машина client

Имя Director

dir-ВашиИнициалы (например, dir-sab)

Имя Storage

stor-ВашиИнициалы (например, stor-sab)

Имя клиента

cli-ВашиИнициалы (например, cli-sab)

Пароль от Director

dirВашиИнициалы (например, dirsab)

Пароль от Storage

storВашиИнициалы (например, storsab)

Пароль от клиента

clientВашиИнициалы (например, clientsab)

Директория для восстановления

/homeВашиИнициалы (например, /homesab)

2. Используя консольную утилиту сделайте полное резервное копирование домашней директории клиента.

клиент

 nano /etc/bacula/bconsole.conf

Director {

Name = dir-baranovv

Password = "dirbaranovv" # Пароль для подключения Director

}

FileDaemon {

Name = baranovv-client-fd

FDPort = 9102

WorkingDirectory = /var/lib/bacula

Pid Directory = /run/bacula

Plugin Directory = /usr/lib/bacula

FDAddress = 192.168.122.5 # IP-адрес клиента

}

Messages {

Name = Standard

director = baranovv-server-dir = all, !skipped, !restored

} сервер sudo nano /etc/bacula/bacula-dir.conf

Director {   Name = dir-baranovv   DIRport = 9101   QueryFile = "/etc/bacula/scripts/query.sql"   WorkingDirectory = /var/lib/bacula   PidDirectory = /var/run/bacula   Messages = Daemon

Maximum Concurrent Jobs = 10   Password = "dirbaranovv"  # Установите свой пароль }

Catalog {    Name = MyCatalog    dbname = "bacula"              # Имя базы данных    dbuser = "bacula"      # Имя пользователя    dbpassword = "bacula"      # Пароль для пользователя    DB Address = "192.168.122.4"        DB Port = 5432                 # Порт PostgreSQL }

JobDefs {  Name = "DefaultJob"  Type = Backup  Level = Incremental  Client = baranovv-server-fd  FileSet = "Full Set"  Schedule = "WeeklyCycle"  Storage = File1  Messages = Standard  Pool = File  SpoolAttributes = yes  Priority = 10  Write Bootstrap = "/var/lib/bacula/%c.bsr" } Job {

Name = "BackupClient1"

Type = Backup

Level = Full

Client = baranovv-client-fd

FileSet = "Full Set"

Schedule = "WeeklyCycle"

Storage = stor-baranovv

Messages = Standard

Pool = File

} Job {  Name = "BackupCatalog"  JobDefs = "DefaultJob"  Level = Full  FileSet="Catalog"  Schedule = "WeeklyCycleAfterBackup"  RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup.pl MyCatalog"

RunAfterJob  = "/etc/bacula/scripts/delete_catalog_backup"  Write Bootstrap = "/var/lib/bacula/%n.bsr"  Priority = 11                   # run after main backup } Job {  Name = "RestoreFiles"  Type = Restore  Client=baranovv-server-fd  Storage = File1  FileSet="Full Set"  Pool = File  Messages = Standard  Where = /nonexistant/path/to/file/archive/dir/bacula-restores } FileSet {  Name = "Full Set"  Include {    Options {      signature = MD5    }    File = /usr/sbin  }  Exclude {    File = /var/lib/bacula    File = /nonexistant/path/to/file/archive/dir    File = /proc    File = /tmp    File = /sys    File = /.journal    File = /.fsck  } }

Schedule {  Name = "WeeklyCycle"  Run = Full 1st sun at 23:05  Run = Differential 2nd-5th sun at 23:05  Run = Incremental mon-sat at 23:05 } Schedule {  Name = "WeeklyCycleAfterBackup"  Run = Full sun-sat at 23:10 } FileSet {    Name = "Catalog"  Include {    Options {      signature = MD5    }    File = "/var/lib/bacula/bacula.sql"  } } Client {    Name = baranovv-server-fd    Address = 192.168.122.5           # Укажите IP-адрес клиента    FDPort = 9102                     # Порт File Daemon (по умолчанию 9102)    Catalog = MyCatalog               # Название каталога    Password = "clientbaranovv"       # Пароль для клиента    File Retention = 60 days          # Срок хранения данных о файлах    Job Retention = 6 months          # Срок хранения данных о заданиях    AutoPrune = yes                   # Включение автоматической очистки }

Client {    Name = baranovv-client-fd    Address = 192.168.122.5           # Укажите IP-адрес клиента    FDPort = 9102                     # Порт File Daemon (по умолчанию 9102)    Catalog = MyCatalog               # Название каталога    Password = "clientbaranovv"       # Пароль для клиента    File Retention = 60 days          # Срок хранения данных о файлах    Job Retention = 6 months          # Срок хранения данных о заданиях    AutoPrune = yes                   # Включение автоматической очистки } Autochanger {  Name = File1 # Do not use "localhost" here

Address = localhost                # N.B. Use a fully qualified name here  SDPort = 9103  Password = "1Gc5tV-dVvizlVm8xm2K99gqzxr8mjXW-"  Device = FileChgr1  Media Type = File1  Maximum Concurrent Jobs = 10        # run up to 10 jobs a the same time  Autochanger = File1                 # point to ourself } # Definition of a second file Virtual Autochanger device #   Possibly pointing to a different disk drive Autochanger {  Name = File2 # Do not use "localhost" here  Address = localhost                # N.B. Use a fully qualified name here  SDPort = 9103  Password = "1Gc5tV-dVvizlVm8xm2K99gqzxr8mjXW-"  Device = FileChgr2  Media Type = File2  Autochanger = File2                 # point to ourself # Maximum Concurrent Jobs = 10        # run up to 10 jobs a the same time } # Reasonable message delivery -- send most everything to email address #  and to the console Messages {  Name = Standard

mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e o$  operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Int$  mail = root = all, !skipped  operator = root = mount  console = all, !skipped, !saved  append = "/var/log/bacula/bacula.log" = all, !skipped  catalog = all } # # Message delivery for daemon messages (no job). Messages {  Name = Daemon  mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon m$  mail = root = all, !skipped  console = all, !skipped, !saved  append = "/var/log/bacula/bacula.log" = all, !skipped }

Storage {    Name = stor-baranovv    Address = 192.168.122.4         # IP-адрес сервера Bacula Storage Daemon    SDPort = 9103                   # Порт Storage Daemon (по умолчанию 9103)    Password = "storbaranovv"       # Пароль для Storage Daemon    Device = DevStorage             # Имя устройства (из bacula-sd.conf)    Media Type = File               # Тип носителя (из bacula-sd.conf) }

# Default pool definition Pool {  Name = Default  Pool Type = Backup  Recycle = yes                       # Bacula can automatically recycle Volumes  AutoPrune = yes                     # Prune expired volumes  Volume Retention = 365 days         # one year  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable  Maximum Volumes = 100               # Limit number of Volumes in Pool } # File Pool definition Pool {  Name = File  Pool Type = Backup  Recycle = yes                       # Bacula can automatically recycle Volumes  AutoPrune = yes                     # Prune expired volumes  Volume Retention = 365 days         # one year  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable  Maximum Volumes = 100               # Limit number of Volumes in Pool  Label Format = "Vol-"               # Auto label } # Scratch pool definition Pool {  Name = Scratch  Pool Type = Backup } Console {  Name = baranovv-server-mon  Password = "bMXx9zyaOMlLiuyEytglGo6PYadLmISTH"  CommandACL = status, .status } sudo -u postgres psql

CREATE ROLE bacula WITH LOGIN PASSWORD 'bacula';

CREATE DATABASE bacula OWNER bacula;

GRANT ALL PRIVILEGES ON DATABASE bacula TO bacula;

\q

sudo -u postgres psql

sudo /usr/share/bacula-director/make_postgresql_tables

sudo /usr/share/bacula-director/grant_postgresql_privileges

CREATE ROLE root WITH LOGIN PASSWORD 'postgres';

ALTER ROLE root SUPERUSER;

sudo nano /usr/share/bacula-director/make_postgresql_tables

заменить db_name=${db_name:-XXX_DBNAME_XXX} на db_name=${db_name:-bacula}

аналогично sudo nano /usr/share/bacula-director/grant_postgresql_privileges

sudo /usr/share/bacula-director/make_postgresql_tables

sudo /usr/share/bacula-director/grant_postgresql_privileges

sudo -u postgres psql

GRANT ALL PRIVILEGES ON DATABASE bacula TO bacula;

\c bacula

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO bacula;

GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO bacula;

sudo systemctl status bacula-director (чиню ошибку)

sudo nano /etc/bacula/bacula-sd.conf

Storage {

Name = stor-baranovv

SDPort = 9103

WorkingDirectory = /var/lib/bacula

PidDirectory = /var/run/bacula

Maximum Concurrent Jobs = 20

Messages = Standard

SDAddress = 192.168.122.4 # Укажите IP-адрес сервера Bacula SD

}

#Director {  #  Name = baranovv-server-dir #   Password = "storbaranovv" #} Director {   Name = dir-baranovv  # Имя должно совпадать с секцией Director в bacula-dir.conf    Password = "storbaranovv"  # Пароль должен совпадать с паролем в bacula-dir.conf }

#Director {

# Name = baranovv-server-mon

# Password = "FckzbLHdaFs-Gp87LHGLpk1VBWLYMOmDV"

# Monitor = yes

#}

Autochanger {

Name = FileChgr1

Device = FileChgr1-Dev1

Changer Command = ""

Changer Device = /dev/null

}

Device {

Name = FileChgr1-Dev1

Media Type = File1

Archive Device = /nonexistent/path/to/file/archive/dir

LabelMedia = yes # Позволяет Bacula метить неразмеченные носители

Random Access = yes

AutomaticMount = yes # Автоматически монтировать устройство

RemovableMedia = no

AlwaysOpen = no

Maximum Concurrent Jobs = 5

}

Device {

Name = DevStorage

Media Type = File

Archive Device = /var/lib/bacula/storage

LabelMedia = yes

Random Access = yes

AutomaticMount = yes

RemovableMedia = no

AlwaysOpen = no

Maximum Concurrent Jobs = 5

}

Messages {

Name = Standard

director = baranovv-server-dir = all

}

sudo rm -f /var/lib/bacula/bacula-dir.*

sudo rm -f /run/bacula/bacula-dir.*

ls -ld /var/lib/bacula /run/bacula

sudo touch /var/log/bacula/bacula.log

sudo chown bacula:bacula /var/log/bacula/bacula.log

sudo systemctl restart bacula-director

sudo systemctl status bacula-director

(теперь к заданию)

sudo systemctl status bacula-dir

sudo systemctl status bacula-sd

sudo systemctl status bacula-fd

(если все зеленое то ок)

sudo mkdir -p /nonexistent/path/to/file/archive/dir

sudo chown bacula:bacula /nonexistent/path/to/file/archive/dir

sudo bconsole

list clients

run

1

status dir

Робит

(проверка конфига бакула) sudo /usr/sbin/bacula-dir -t -c /etc/bacula/bacula-dir.conf

3. Восстановите резервную копию

sudo bconsole

restore

(далее выбираем по jobld) обычно цифра и дату пишем

4. Создайте несколько файлов на клиенте. С помощью графической утилиты выполните дифференциальное копирование.

Клиент

cd ~

touch file1.txt file2.txt file3.txt

(сервак)

sudo apt install bacula-console-qt

sudo /usr/sbin/bat

/etc/bacula/bat.conf

Archive Device = /path/to/storage/dir

Фикс ошибки

Сервер

клиент и сервак

sudo systemctl restart bacula-director

sudo systemctl restart bacula-sd

sudo mkdir -p /var/lib/bacula/storage

sudo chown bacula:bacula /var/lib/bacula/storage

sudo chown -R bacula:bacula /var/lib/bacula/storage

sudo chmod -R 775 /var/lib/bacula/storage

sudo systemctl restart bacula-sd

короче нашел ошибку надо в /etc/bacula/bacula-dir.conf нас серваке заменить все Client = baranovv-server-fd на Client = baranovv-client-fd

итог:

5. Отредактируйте созданные файлы. Удалите один из них и создайте несколько новых. С помощью графической утилиты выполните инкрементальное копирование.

Клиент

sudo chown -R bacula:bacula /home/user/data

sudo mkdir -p /home/user/data

sudo chown -R $USER:$USER /home/user/data

# Редактируем файл (например, data.txt)

echo "New content" > /home/user/data/data.txt

# Удаляем файл

rm /home/user/data/old_file.txt

# Создаём новые файлы

touch /home/user/data/new_file1.txt

touch /home/user/data/new_file2.txt

далее запускаем инкрементацию через граф интерфейс

sudo bat

*status dir

6. Повторите пункты 4 и 5, но с использованием консольной утилиты.

Таким образом, будет выполнено 5 резервных копирований:

1. Полное

2. Дифференциальное

3. Инкрементальное

4. Дифференциальное

5. Инкрементальное

sudo bconsole

*run job=BackupClient1

*mod и там меняем

7.С помощью графической утилиты откройте вкладку bRestore и выбирая различные JobId перетягивайте папку для резервного копирования в нижнюю панель. Таким образов в ней будет расположено 5 строк:

Проанализируйте значение в поле JobId, включающее в себя номера необходимых копий для восстановления. Объясните полученные значения.

Каждое JobId связано с конкретным заданием резервного копирования в Bacula и может быть использовано для восстановления данных на основе того, что было включено в этот резерв. Ваша цель — восстановить файлы, которые были изменены или добавлены в разные моменты времени.

  • JobId для полного копирования охватывает все данные на момент резервного копирования.

  • JobId для дифференциального копирования включает только те изменения, которые произошли после последнего полного копирования.

  • JobId для инкрементального копирования включает только те изменения, которые произошли после предыдущего резервного копирования (будь то полное или дифференциальное).

Пример:

  • JobId 6 (Full) — это первое полное копирование.

  • JobId 9 (Differential) — это дифференциальное копирование, которое сохраняло изменения после последнего полного.

  • JobId 10 (Incremental) — это инкрементальное копирование, сохраняющее изменения после последнего резервного копирования (любого типа).

  • JobId 17 (Differential) — это второе дифференциальное копирование.

  • JobId 18 (Incremental) — это инкрементальное копирование, выполняющееся после второго дифференциального.

JobId в графическом интерфейсе bRestore и перетащите файлы на панель восстановления. Это позволит вам понять, какие файлы были восстановлены в зависимости от выполненных резервных копий и типа каждого задания.