Клонирование Git через rsnapshot не удается

Клонирование Git через rsnapshot не удается

Я пытаюсь запустить свой скрипт резервного копирования через rsnapshot. Он просто клонирует указанный репозиторий git в текущий рабочий каталог. Он отлично работает, если запущен без rsnapshot.

/etc/rsnapshot.config:

backup_script   /usr/local/bin/gitbackup.py -r https://foo.bar/myrepo.git -u username -f /root/.pwd git/myrepo.git/

Это создает каталог с .git ниже myrepo/.git в месте резервного копирования и ошибку:

# rsnapshot -v daily
[...]
error: could not lock config file /var/cache/rsnapshot/tmp/myrepo/.git/config: No such file or directory
fatal: could not set 'remote.origin.fetch' to '+refs/heads/*:refs/remotes/origin/*'

Оба пользователя, rsnapshot и root, получили файл ~/.gitconfig в своих домашних каталогах.

Также пробовал запустить его с sudo. Результат:

Cloning into 'myrepo'...
/bin/rm -rf /var/cache/rsnapshot/tmp/ 
/bin/rm: cannot remove '/var/cache/rsnapshot/tmp/myrepo/.git': Directory not empty
----------------------------------------------------------------------------
rsnapshot encountered an error! The program was invoked with these options:
/usr/bin/rsnapshot -v daily 
----------------------------------------------------------------------------
ERROR: Warning! /bin/rm failed.
ERROR: Could not rm_rf("/var/cache/rsnapshot/tmp/");
rm -f /var/run/rsnapshot.pid 
fatal: remote-curl: fetch attempted without a local repo

Есть идеи, что не так? Возможно, нужно задать какие-то переменные окружения для git?

решение1

Проблема была в неуказанном рабочем каталоге. Видимо, rsnapshot использует /var/cache/rsnapshot/tmp/по умолчанию и /var/cache/rsnapshotдоступен для чтения и записи только пользователю rsnapshot (тогда как backup_script запускается от имени root).

Теперь мой скрипт резервного копирования изменяет рабочий каталог, извлекается из него, /home/rsnapshot/git_backupи этот каталог резервируется с помощью обычной backupдирективы.

backup_script   /usr/local/bin/gitbackup.py -r https://foo.bar/myrepo.git -u username -f /root/.pwd -w /home/rsnapshot/git_backup  git_tmp/myrepo.git/
backup  /home/rsnapshot/git_backup/ localhost_git/

Теперь у меня возникла проблема: синхронизированные (не клонированные) извлечения ниже /var/cache/rsnapshot/daily.0/localhost_gitсодержат только ~/.gitкаталог и ничего больше, но это уже другая проблема.

Связанный контент