UrBackup
UrBackup — это простая в настройке кроссплатформенная система резервного копирования типа клиент-сервер.
Позволяет создавать инкрементные и полные резервные копии как целых разделов, так и отдельных каталогов, с возможностью выбора файлов, которые попадут в архив, и делать снапшоты разделов жесткого диска.
UrBackup предоставляет веб-интерфейс для управления резервными копиями.
Установка
Сервер UrBackup
Установить пакет urbackup-server:
# apt-get install urbackup-server
Создать каталог для резервных копий:
# mkdir -p /mnt/backups
Каталог должен принадлежать пользователю urbackup. У пользователя должны быть права на чтение/запись в этот каталог:
# chown -R urbackup:urbackup /mnt/backups
Запустить сервер UrBackup:
# systemctl enable --now urbackup-server
# netstat -lnpt | grep urbackupsrv
tcp 0 0 0.0.0.0:55413 0.0.0.0:* LISTEN 4184/urbackupsrv
tcp 0 0 0.0.0.0:55414 0.0.0.0:* LISTEN 4184/urbackupsrv
tcp 0 0 :::55413 :::* LISTEN 4184/urbackupsrv
tcp 0 0 :::55414 :::* LISTEN 4184/urbackupsrv
Веб-интерфейс будет доступен по адресу http://<IP-сервера>:55414:
Клиент UrBackup
Установить пакет urbackup-client:
# apt-get install urbackup-client
Запустить клиент UrBackup:
# systemctl enable --now urbackup-client
Локальные клиенты будут обнаружены сервером автоматически и появятся в веб-интерфейсе на вкладке «Статус»:
Настройка
В веб-интерфейсе на вкладке «Настройки»→«Главные» можно изменять настройки UrBackup. Некоторые настройки влияют только на сервер, а некоторые влияют как на клиент, так и на сервер. Для этих настроек администратор может установить значения по умолчанию или переопределить настройки клиента.
На вкладке «Сервер» можно указать каталог для хранения резервных копий:
На вкладке «Файловые бэкапы» можно указать настройки файловых резервных копий, в том числе каталоги, которые будут бэкапироваться на клиенте (каталоги разделяются ;):
Для более удобного администрирования можно создать несколько групп, распределить клиенты по группам, и задать настройки отдельно для каждой группы клиентов:
Создание резервных копий на сервере
Бэкап будет производиться на основании общих установок.
Бэкап можно также произвести вручную, отметив клиент и выбрав тип бэкапа в выпадающем списке:
Более подробно отслеживать активность резервного копирования можно на вкладках «В работе», «Бэкапы» и «Логи»:
Отчёты/содержимое резервных копий можно просмотреть на вкладке «Бэкапы»:
Выбрав клиента, можно просмотреть список его бэкапов:
Выбрав бэкап, можно просмотреть его содержимое:
Резервные копии сохраняются в каталоге, который был указан в веб-интерфейсе. В этом каталоге для каждого клиента создается свой подкаталог.
Образы дисковых разделов хранятся в виде файлов в формате vhdz (имя файла будет иметь вид: Image_<Drive>_<YYMMDD-HHMM>.vhdz):
# ls -l /mnt/backups/PK1/220121-1456_Image_C/
итого 14730884
-rwxr-x--- 1 urbackup urbackup 15080483897 янв 21 15:27 Image_C_220121-1456.vhdz
-rwxr-x--- 1 urbackup urbackup 1310700 янв 21 14:56 Image_C_220121-1456.vhdz.cbitmap
-rwxr-x--- 1 urbackup urbackup 2621376 янв 21 15:27 Image_C_220121-1456.vhdz.hash
-rwxr-x--- 1 urbackup urbackup 556 янв 21 14:56 Image_C_220121-1456.vhdz.mbr
-rwxr-x--- 1 urbackup urbackup 0 янв 21 15:27 Image_C_220121-1456.vhdz.sync
Резервные копии файлов находятся в подкаталогах <YYMMDD-HHMM>. Каталог current является ссылкой на последнюю резервную копию. Резервные копии папок с файлами сохраняются в открытом виде:
# ls /mnt/backups/host-155.test.alt/220120-1540/
home var
Работа с UrBackup на клиенте
Для работы с UrBackup на клиенте предназначена утилита urbackupclientctl:
urbackupclientctl start
— запустить инкрементное/полное резервное копирование;urbackupclientctl status
— получить текущий статус резервного копирования;urbackupclientctl browse
— просмотр списка резервных копий и файлов/папок в резервных копиях;urbackupclientctl restore-start
— восстановить файлы/папки из резервной копии;urbackupclientctl set-settings
— установить параметры резервного копирования;urbackupclientctl add-backupdir
— добавить новый каталог в список каталогов, для которых выполняется резервное копирование;urbackupclientctl list-backupdirs
— вывести список каталогов, для которых выполняется резервное копирование;urbackupclientctl remove-backupdir
— удалить каталог из списока каталогов, для которых выполняется резервное копирование.
Справку по конкретной команде можно получить, выполнив команду:
urbackupclientctl <command> --help
Список резервных копий:
# urbackupclientctl browse
[{
"archived": 0,
"backuptime": 1642686041,
"disable_delete": true,
"id": 2,
"incremental": 1,
"size_bytes": 109955109
}
,{
"archived": 0,
"backuptime": 1642684086,
"id": 1,
"incremental": 0,
"size_bytes": 2306704775
}
]
Запустить полное бэкапирование:
# urbackupclientctl start -f
Waiting for server to start backup... done
Preparing... done
[======================================================> ] 86% 2.01947 GB/2.36159 GB at 400.289 MBit/s
Completed successfully.
Восстановление данных из резервной копии:
# urbackupclientctl restore-start -b 2
Starting restore. Waiting for backup server... done
[=============================================================> ] 97% 2.33831 GB/2.41119 GB at 76.024 KBit/s
Restore completed successfully.
Добавление каталогов, для которых будут создаваться резервные копии:
# urbackupclientctl add-backupdir -d /etc
Просмотреть список каталогов, для которых создаются резервные копии:
# urbackupclientctl list-backupdirs
PATH NAME FLAGS
----- ---- ----------------------------------------------
/home home follow_symlinks,symlinks_optional,share_hashes
/var var follow_symlinks,symlinks_optional,share_hashes
/etc etc follow_symlinks,symlinks_optional,share_hashes
Резервное копирование баз данных
На сервере БВ должен быть установлен клиент UrBackup.
MySQL/MariaDB
Для создания дампа БД следует в файле /etc/urbackup/mariadbdump.conf установить параметр
MARIADB_DUMP_ENABLED=1, и указать имя/пароль MySQL-пользователя.
В результате при создании файловых бэкапов будет создаваться дамп базы данных /mnt/backups/<client>/<YYMMDD-HHMM>/urbackup_backup_scripts/mariadbdump.sql.
Восстановить дамп MySQL/MariaDB, можно выполнив команду:
# mysql -u root -p < mariadbdump.sql
PostgreSQL
Создание дампа БД
Для создания дампа БД следует в файле /etc/urbackup/postgresqldump.conf установить параметр POSTGRESQL_DUMP_ENABLED=1.
В результате при создании файловых бэкапов будет создаваться дамп базы данных /mnt/backups/<client>/<YYMMDD-HHMM>/urbackup_backup_scripts/postgresqldump.sql.
Пример команды восстановления дампа PostgreSQL:
# su - postgres -s /bin/sh -c "psql -f /home/user/postgresqldump.sql postgres"
Создание базовой копии
В файле /etc/urbackup/postgresbase.conf установить параметр POSTGRESQL_BASE_ENABLED=1.
Добавить виртуального клиента:
# urbackupclientctl set-settings -v virtual_clients -k wal
Разрешить пользователю postgres устанавливать соединение репликации. Для этого в файле /var/lib/pgsql/data/pg_hba.conf раскомментировать строку:
local replication postgres trust
В файле /var/lib/pgsql/data/postgresql.conf для max_wal_senders установить значение отличное от нуля, для wal_level установить значение archive. Перезапустить PostgreSQL и проверить работает ли бэкапирование:
/usr/share/urbackup/scripts/postgresbase > /dev/null
Starting base backup of PostgreSQL at Пн 24 янв 2022 09:14:11 EET...
Base backup of PostgreSQL finished at Пн 24 янв 2022 09:14:12 EET.
Если вы не хотите иметь непрерывную резервную копию WAL, можно остановиться на этом этапе.
Для частого резервного копирования данных WAL на сервер резервного копирования необходимо настроить PostgreSQL таким образом, чтобы данные WAL куда-то копировались, а после завершения резервного копирования WAL удалялись.
Настроить PostgreSQL для архивирования файлов WAL в каталог, установив (файл /var/lib/pgsql/data/postgresql.conf) для параметра archive_mode значение on и для параметра archive_command значение
cp %p /var/lib/walarchive/incoming/%f; mv /var/lib/walarchive/incoming/%f /var/lib/walarchive/staging/%f
Создать каталоги:
# mkdir -p /var/lib/walarchive/{incoming,staging,backup}
# chown postgres:postgres /var/lib/walarchive/{incoming,staging,backup}
Настроить архивы WAL для резервного копирования:
# urbackupclientctl add-backupdir --keep -d /var/lib/walarchive/backup -v wal
Затем следует настроить интервал резервного копирования [wal], чтобы он был относительно небольшим, а интервал резервного копирования основного клиента с базовым сценарием резервного копирования относительно большим.
Для восстановления данных следует сначала восстановить резервную копию:
# urbackupclientctl restore-start -b last -d urbackup_backup_scripts/postgresbase
Starting restore. Waiting for backup server... done
[===================================> ] 56% 24.8957 MB/44.8081 MB
Restore completed successfully.
а затем скопировать последний набор файлов WAL на сервер базы данных PostgreSQL и следовать инструкции по восстановлению (см. https://postgrespro.ru/docs/postgrespro/9.6/continuous-archiving#backup-pitr-recovery).
# chown postgres:postgres /var/lib/pgsql/data
# chmod 700 /var/lib/pgsql/data