UrBackup: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) (→Чистка) |
||
Строка 81: | Строка 81: | ||
Во время чистки не должны выполняться задания бэкапа. | Во время чистки не должны выполняться задания бэкапа. | ||
<pre> | <pre> | ||
− | # удаление | + | # освобождение части хранилища, где x процент (например 10%) или объем (например 10G) который необходимо очистить |
+ | # 0% означает удаление только устаревших бэкапов, которые система еще не успела автоматически удалить | ||
# Linux | # Linux | ||
− | urbackupsrv | + | urbackupsrv cleanup --amount x |
# Windows | # Windows | ||
− | + | cleanup.bat x | |
− | # | + | # удаление из хранилища каталогов о которых нет информации в базе данных UrBackup |
− | |||
# Linux | # Linux | ||
− | urbackupsrv | + | urbackupsrv remove-unknown |
# Windows | # Windows | ||
− | + | remove_unknown.bat | |
</pre> | </pre> |
Версия 09:36, 10 октября 2025
Сайт разработчика (https://www.urbackup.org/)
Обзор
Сервер
Важные факты
- Веб-интерфейс сервера доступен через FastCGI (на порту 55413) и HTTP (на порту 55414).
- На порту FastCGI может быть настроено шифрование SSL.
- Для обнаружения клиентов, сервер каждые 50 сек. отправляет широковещательный UDP пакет на 255.255.255.255:35622
- Сервер UrBackup может подключаться на http://198.58.118.162 для загрузки обновлений серверной и клиентской части.
Структура сервера для Linux
Рабочие каталоги сервера
# веб-интерфейс /usr/share/urbackup # здесь /usr/local/share/urbackup # или здесь # база данных конфигурации и прочие рабочие файлы /var/urbackup # здесь /usr/local/var/urbackup # или здесь
Исполняемые файлы
/usr/bin/urbackupsrv /usr/bin/urbackup_snapshot_helper /usr/bin/urbackup_mount_helper
Настройка Firewall
vi /usr/lib/firewalld/services/urbackup-server.xml #------------------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <service> <short>urbackup-server</short> <description>UrBackup server</description> <port protocol="tcp" port="55413"/> <port protocol="tcp" port="55414"/> <port protocol="tcp" port="55415"/> <port protocol="udp" port="35623"/> </service> #------------------------------------------------------------------------------- firewall-cmd --reload firewall-cmd --info-service=urbackup-server firewall-cmd --permanent --zone=<your_zone> --add-service=urbackup-server firewall-cmd --reload
Структура сервера для Windows
нужно смотреть, пока нет информации
Принцип работы резервного копирования файлов
актуальную версию см. в документации
- Резервное копирование запускается когда сервер обнаруживает, что время до последнего инкрементного резервного копирования больше, чем интервал для инкрементного резервного копирования, или время до последнего полного резервного копирования больше, чем интервал для полного резервного копирования. Резервное копирование также можно запускать по запросам клиентов.
- Сервер создает новый каталог для сохранения резервной копии. Схема именования для этого каталога - YYMMDD-HHMM. Каталог создается в хранилище резервной копии в каталоге, имя которого совпадает с именем клиента.
- Сервер запрашивает у клиента построение списка файлов. Клиент создает список файлов и сообщает, что это сделано.
- Сервер загружает с клиента ’urbackup/data/filelist.ub’. Если это инкрементальное резервное копирование, то сервер сравнивает новый ’filelist.ub’ с последним полученным от клиента и определяет различия.
- Сервер начинает загрузку файлов. Если это инкрементальное резервное копирование, то загружаются только новые и измененные файлы. Если резервное копирование полное, то с клиента загружаются все файлы.
- Сервер загружает файл во временный файл и размещает его в папке urbackup_tmp_files в каталоге хранилища резервных копий, либо в указанную в расширенных настройках временную папку. После успешной загрузки файла, сервер вычисляет его хэш и проверяет наличие другого файла с таким же значением хэша. Если такой файл существует, они считаются одинаковыми, и жесткая ссылка на другой файл сохраняется, а временный файл удаляется. Если такой файл не существует, файл перемещается в новое расположение резервной копии. Путь к файлу и значение хэша сохраняются в базе данных сервера.
- Если выполняется инкрементальное резервное копирование и файл не изменен, то создается жесткая ссылка на соответствующий файл предыдущего резервного копирования.
- Если выполняется инкрементальное резервное копирование при включенной опции "использовать символические ссылки при инкрементальном резервном копировании" и каталог с более чем 10 файлами или папками не изменился, то каталог переносится в “.directory_pool” и на него создаются символьные ссылки в старом и новом каталоге резервного копирования. Количество символьных ссылок на данный каталог увеличивается/уменьшается каждый раз когда создается/удаляется другая символьная ссылка.
- Если во время резервного копирования клиент переходит в автономный режим, а резервное копирование выполняется инкрементально, сервер продолжает создавать жесткие ссылки на файлы в предыдущем резервном копировании, но не пытается снова загрузить файлы. Файлы, которые не удалось загрузить, не сохраняются в списке файлов на стороне сервера. Если резервная копия является полной и клиент переходит в автономный режим, процесс резервного копирования прерывается и сохраняется список частичных файлов, включающий все файлы, загруженные до этого момента.
- Если все файлы были переданы, сервер обновляет «текущую» символическую ссылку в расположении хранилища резервной копии клиента, чтобы указать на новую резервную копию. Это происходит только в том случае, если клиент не отключился во время резервного копирования.
Чистка
- Если полный файловый бэкап был прерван на стороне клиента, то информация о нем не записывается в базу сервера, каталог бэкапа остается и не используется последующими бэкапами.
- В каталоге пула “.directory_pool” часто остаются каталоги на которые не осталось символических ссылок из каталогов резервных копий.
Штатные механизмы чистки
Во время чистки не должны выполняться задания бэкапа.
# освобождение части хранилища, где x процент (например 10%) или объем (например 10G) который необходимо очистить # 0% означает удаление только устаревших бэкапов, которые система еще не успела автоматически удалить # Linux urbackupsrv cleanup --amount x # Windows cleanup.bat x # удаление из хранилища каталогов о которых нет информации в базе данных UrBackup # Linux urbackupsrv remove-unknown # Windows remove_unknown.bat
Ручная чистка
Если штатные механизмы не справляются, то можно удалить вручную. Для этого нужно понимать что вы удаляете и принимать риск, что данные в базе могут стать не согласованными с каталогами резервных копий.
Пример скрипта ручной чистки каталога .directory_pool
#!/bin/bash cli_path=/path/to/urbackup/<client_name> # составляем список всех линков со всех каталогов резервных копий find -L ${cli_path}/220610-2333 -type l -exec ls -lh {} \; | cut -d '>' -f 2 > $cli_path/links.txt find -L ${cli_path}/220611-0814 -type l -exec ls -lh {} \; | cut -d '>' -f 2 >> $cli_path/links.txt #... # удаляем каталоги пула на которые нет линков в каталогах резервных копий for f in $cli_path/.directory_pool/??/*; do cat $cli_path/links.txt | grep $f >/dev/null || ( echo $f rm -rf "$f" ) done
Клиент для Windows
Клиент имеет основной процесс и процесс интерфейса. Интерфейсный процесс отображается в трее, предоставляет пользователю интерфейс для управления и передает команды и изменения конфигурации основному процессу.
Основной процесс слушает 3 порта:
- 35622/UDP - порт обнаружения, принимает широковещательные сообщения от сервера и сообщает в ответ имя своего компьютера
- 35623/TCP - порт управления, принимает команды и изменения конфигурации от интерфейсного процесса и от сервера
- 35621/TCP - порт передачи данных, принимает запросы на резервирование от сервера
Сервер устанавливает постоянное соединение с портом управления 35623/TCP каждого клиента, через который они могут запрашивать задачи резервирования и изменения конфигурации от сервера.
Основной процесс сканирует каталоги резервирования и создает файлы
- "urbackup/data/filelist.ub" - список всех резервируемых файлов
- "urbackup/backup_client.db" - индексная база данных о всех резервируемых файлах
Для быстрого обновления этих файлов основной процесс использует встроенный механизм Windows для мониторинга изменений в каталогах. Каждые 10 секунд, а также при запросе списка файлов, индексная база получает обновления.
Для резервирования файлов, сервер загружает список файлов от клиента и запускает резервирование и загрузку изменений через встроенный в Windows файловый сервер.
Для резервирования образа используется только порт 35621/TCP.
Клиент для Linux
Строку запуска скрипта установки необходимо брать с сайта (ссылка выше). На 6.10.2020 она выглядит так.
TF=$(mktemp) && wget "https://hndl.urbackup.org/Client/2.4.10/UrBackup%20Client%20Linux%202.4.10.sh" -O $TF && sudo sh $TF; rm -f $TF
systemctl status urbackupclientbackend
Рабочий каталог клиента
/var/lib/urbackup
Рабочий каталог клиента создается при первом подключении клиента к серверу. В нем случайно генерируется ключевой файл server_ident.key
, по которому клиент будет проводить аутентификацию сервера в дальнейшем. Никакой другой сервер уже не сможет подключиться к клиенту, если данный файл создан.
Если необходимо переключить клиента на другой сервер, то необходимо удалить рабочий каталог клиента /var/lib/urbackup
Скрипт удаление urbackup клиента
/usr/local/sbin/uninstall_urbackupclient
Настройка механизма снепшотов
/usr/local/etc/urbackup/snapshot.cfg # urbackup поддерживает варианты: # 1) dattobd volume snapshot kernel module from https://github.com/datto/dattobd # 2) LVM - Logical Volume Manager snapshots
Клиент командной строки
/usr/local/bin/urbackupclientctl
Открытие доступа на FW
vi /usr/lib/firewalld/services/urbackup-client.xml
<?xml version="1.0" encoding="utf-8"?> <service> <short>urbackup-client</short> <description>UrBackup client for Linux</description> <port protocol="tcp" port="35621"/> <port protocol="udp" port="35622"/> <port protocol="tcp" port="35623"/> </service>
firewall-cmd --reload firewall-cmd --info-service=urbackup-client firewall-cmd --permanent --zone=<your_zone> --add-service=urbackup-client firewall-cmd --reload
Перенос на другой хост
/path/to/urbackup
- каталог с бэкапами/var/urbackup
- каталог с рабочими данными
Пути к данным каталогам на старом и новом хосте должны совпадать.
Для переноса UrBackup сервера на другой хост, необходимо
- остановить и отключить urbackup сервис на старом хосте
- установить urbackup сервер на новом хосте
- остановить сервис urbackup сервера на новом хосте
- переименовать каталоги
/var/urbackup
,/path/to/urbackup
в*.default
(сохраняем исходное состояние) - перенести со старого хоста на новый с сохранением всех метаданных (время, права, владелец, ...) каталоги
/var/urbackup
,/path/to/urbackup
- если на новом хосте на перенесенных каталогах владелец и группа отличны от urbackup, то необходимо установить владельца и группу urbackup
- запустить сервис urbackup сервера на новом хосте
Пример восстановления доступов
chown -R urbackup:urbackup /var/urbackup chmod 755 /var/urbackup chmod -R 644 /var/urbackup/* chmod 750 /var/urbackup/backup_server_files.db chmod 750 /var/urbackup/dataplan_db.txt chmod 750 /var/urbackup/dataplan_db.txt.new chmod 750 /var/urbackup/fileindex chmod 750 /var/urbackup/server_version_info.properties chmod 750 /var/urbackup/server_version_info.properties.new chmod 750 /var/urbackup/UrBackupUpdate.exe chmod 750 /var/urbackup/UrBackupUpdateLinux.sh chmod 750 /var/urbackup/*.sig* chown -R urbackup:urbackup /path/to/urbackup chown 755 /path/to/urbackup chown 750 /path/to/urbackup/*
Сервер UrBackup немного отличается на CentOS 8 и Ubuntu 20.04.
В Ubuntu 20.04 используется файл /var/urbackup/backupfolder
в котором хранится путь к каталогу с бэкапами.
В CentOS 8 такого файла нет, вероятно путь к каталогу с бэкапами хранится в базе.
Это необходимо учитывать при переносе между хостами с разными ОС.
Также для данного файла необходимо задать особые права
chown root:root /var/urbackup/backupfolder chmod 644 /var/urbackup/backupfolder
Установка
Установка на Ubuntu 20.04
Установка
add-apt-repository ppa:uroni/urbackup apt update apt install urbackup-server
В процессе установки укажите путь к каталогу для хранения резервных копий urbackup
/path/to/urbackup
Проверьте статус сервиса
systemctl status urbackupsrv
Установка на CentOS 8
# создание пользователя urbackup useradd -r -d /var/urbackup -s /sbin/nologin -c "User for UrBackup Server" urbackup # создание каталога резервных копий mkdir /path/to/urbackup chown -R urbackup:urbackup /path/to/urbackup chmod -R 770 /path/to/urbackup # добавление репозитория uroni cd /etc/yum.repos.d/ wget https://download.opensuse.org/repositories/home:uroni/CentOS_8/home:uroni.repo # установка dnf install urbackup-server # запуск сервера systemctl enable urbackup-server systemctl start urbackup-server
Установка из исходников
- На официальном сайте www.urbackup.org откройте раздел Download
- Найдите раздел Install from sources
- скачайте последний архив исходников
- следуйте инструкциям, по ссылке More information: Install from sources
Пример установки из исходников на Rocky Linux 10
cd /tmp wget https://hndl.urbackup.org/Server/2.5.33/urbackup-server-2.5.33.tar.gz tar -xvzf urbackup-server-2.5.33.tar.gz cd urbackup-server-2.5.33/ # проверка зависимостей, можно выполнять без прав root ./configure # если вывод содержит error или WARNING то найдите и установите соответствующие devel пакеты # необходимые репозитории appstream, baseos, epel dnf repolist dnf install gcc-c++ zlib-ng-compat-devel libzstd-devel libcurl-devel cryptopp-devel # в итоге должны получить ./configure #------------------------------------------------------------------------------- ... config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands #------------------------------------------------------------------------------- #компиляция бинарников, можно выполнять без прав root make # установка, необходимы права root sudo -s make install # adduser: нераспознанный параметр «--quiet» # ошибка не критична, проверяем что пользователь создан корректно id urbackup uid=980(urbackup) gid=974(urbackup) группы=974(urbackup) grep urbackup /etc/passwd urbackup:x:980:974::/usr/local/var/urbackup:/bin/bash # определяем куда установлен сервер find /usr -name 'urbackupsrv' #------------------------------------------------------------------------------- /usr/local/bin/urbackupsrv #------------------------------------------------------------------------------- # создание сервиса cp urbackup-server.service /etc/systemd/system/ vi /etc/systemd/system/urbackup-server.service # скорректируйте путь /usr/bin/urbackupsrv на путь куда установлен сервер systemctl enable urbackup-server.service cp defaults_server /etc/default/urbackupsrv cp logrotate_urbackupsrv /etc/logrotate.d/urbackupsrv systemctl daemon-reload systemctl start urbackup-server # удаление каталога установки и файла архива rm -rf /tmp/urbackup-server-2.5.33 rm -f /tmp/urbackup-server-2.5.33.tar.gz
Настройка
Откройте веб-интерфейс вашего сервера http://<ip_your_server>:55414
Настройки / Путь для хранения бэкапов - укажите каталог для хранения резервных копий
Задайте пароль администратора
Резервирование
MySQL
Ссылки по теме
Безопасность
Безопасность клиента
/var/lib/urbackup/server_ident.key