Я пытаюсь запустить собственный сценарий резервного копирования через 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
Есть идеи, что не так? Возможно, нужно установить некоторые переменные env для git?
Проблема заключалась в неуказанном рабочем каталоге. Очевидно, что 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
и ничего больше, но это уже другая проблема.