使用rsync备份gitosis存储库?

时间:2010-06-10 17:03:02

标签: rsync gitosis

我有一个标准的gitosis设置,我想用rsync备份。当我尝试:

rsync -avz git@192.168.0.2:/home/git git_origin/

rsync -avz --rsync-path 'sudo rsync' 192.168.0.2:/home/git git_origin/

它不会处理任何存储库文件。很确定它与'git'用户没有密码以及/ home / git / repositories目录结构中所有文件的完全所有权有关。由于你不能'ssh git'或'su git',我无法达到正确的权限级别。

那么,我如何使用rsync来备份我的所有gitosis存储库?

3 个答案:

答案 0 :(得分:1)

最简单的方法是将自定义密钥添加到git用户的authorized_keys文件中。

### autogenerated by gitosis, DO NOT EDIT下的/home/git/.ssh/authorized_keys作为root用户的行上方添加一个条目(在大多数Linux系统上),你应该很高兴。 Gitosis默认在重新生成时忽略authorized_keys文件的自定义条目。

如果你想更多地锁定服务器,你可以随时在密钥输入之前添加一个自定义command=指令,谷歌搜索“rsync ssh lock down”会给你http://sixohthree.com/1458/locking-down-rsync-using-ssh作为第一个命中,应该让你开始。

通过rsync抓取文件而不跳过一些随机用户切换箍(如在user-> root-> git开关中)的唯一另一种方法是使用ssh以root用户身份连接并获取文件用它。

通过提供自定义authorized_keys条目,以root用户身份运行和作为git用户进行ssh'ing,都应该为您提供访问要进行rsync的文件所需的权限。

答案 1 :(得分:0)

我正在使用此script作为我的自定义脚本的开始,它正在使用

--rsync-path='sudo /usr/bin/rsync'

也许这会有所帮助?

答案 2 :(得分:0)

gitolite将rsync列为可以为其提供授权的受支持的外部命令之一。

我还没有这样做,但我相信你可以用一个特定的ssh密钥设置它,允许在每个存储库上使用rsync。第一步是在$RSYNC_BASE文件中设置gitolite.rcexample.conf显示了如何为rsync指定权限。

并且你想知道为什么我回答gitolite而不是gitosis,gitosis没有维护,弃用,死了,停止使用它并切换到gitolite