16. Настройка первого borg-репо

Описание процесса настройки borg-репозитория.

2022-03-11

1. Настройка первого репо для бэкапов

1.1. Создаём первый каталог для хранения первого репо и пробрасываем линк к нему в домашний каталог. По этой короткой ссылке будет удобно указывать название репо для архивов, вместо длинного полного пути к бэкап-каталогу.

export BORGUSERNAME="_borg"
export REPONAME="repo1"
export REPODIR="/data/borgbackup/${REPONAME}"

sudo mkdir -p ${REPODIR}
sudo chown ${BORGUSERNAME}.${BORGUSERNAME} ${REPODIR}
sudo -u ${BORGUSERNAME} /bin/bash -c "ln -s ${REPODIR} ~/"

1.2. Создаём ssh-ключи для будущих клиентов этого репо. Кстати, здесь их хранить не обязательно. Наверное, будет правильней для каждого репо создавать отдельные ключи.

export SSHKEYNAME="borg_${REPONAME}"

sudo -u ${BORGUSERNAME} /bin/bash -c "ssh-keygen -t ed25519 -q -N '' -f ~/.ssh/${SSHKEYNAME}"

1.3. Если файл authorized_keys отсутствует, то создаём его с единственной записью-комментом “Требуется указывать полный путь к каждому репо”.

sudo -u ${BORGUSERNAME} /bin/bash -c "cd ~/.ssh; echo '# Требуется указывать полный путь к каждому репо' > /home/${BORGUSERNAME}/.ssh/authorized_keys"
chmod 600 /home/${BORGUSERNAME}/.ssh/authorized_keys

1.4. Добавляем в authorized_keys запись для доступа к репо:

sudo -u ${BORGUSERNAME} /bin/bash -c "cd ~/.ssh; echo -e 'command=\"/home/${BORGUSERNAME}/.local/bin/borg serve --restrict-to-path ${REPODIR}\",restrict $(cat /home/${BORGUSERNAME}/.ssh/${SSHKEYNAME}.pub)' >> authorized_keys"

1.5. Инициализируем первый репо без шифрования:

REPOLINKNAME="${REPONAME}" # Имя ссылки в home на репо
export BORG_RSH="ssh -i ~/.ssh/${SSHKEYNAME}"
export BORG_REPO="${BORGUSERNAME}@localhost:${REPOLINKNAME}"

# Вызываем sudo -EH для передачи переменных
# окружения в borg и смены HOME.
sudo -EH -u ${BORGUSERNAME} /bin/bash -c 'borg init -e none'

1.6. Проверяем, что в каталоге первого репо создана структура:

$ ls -al ${REPODIR}
total 72
drwxr-xr-x 3 _borg _borg  4096 мар 11 17:30 .
drwxr-xr-x 3 root        root         4096 мар 10 15:42 ..
-rw------- 1 _borg _borg   209 мар 11 17:30 config
drwx------ 3 _borg _borg  4096 мар 11 17:30 data
-rw------- 1 _borg _borg    52 мар 11 17:30 hints.1
-rw------- 1 _borg _borg 41258 мар 11 17:30 index.1
-rw------- 1 _borg _borg   190 мар 11 17:30 integrity.1
-rw------- 1 _borg _borg    73 мар 11 17:30 README