通过 rsnapshot 进行 Git 克隆失败

通过 rsnapshot 进行 Git 克隆失败

我正在尝试通过 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/

这将在备份位置的 myrepo/.git 下创建一个带有 .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目录而不包含其他任何内容,但这是另一个问题。

相关内容