【问题标题】:Backup gitosis repositories with rsync?使用 rsync 备份 gitosis 存储库?
【发布时间】:2010-06-10 17:03:01
【问题描述】:

我有一个标准的 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 存储库?

【问题讨论】:

  • 没有人吗?对于那些运行自己的 gitosis 服务器的人来说,这似乎应该是一个相当常见的功能。

标签: rsync gitosis


【解决方案1】:

IMO 最简单的方法是将自定义密钥添加到 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 的文件所需的权限。

【讨论】:

  • 我相信整个 authorized_keys 文件是自动生成的,所以这行不通。
  • 请注意我对 gitosis 在重写authorized_keys 文件时忽略自定义authorized_keys 条目这一事实的评论。无论 keydir 中有什么,手动添加的任何条目都将被保留。我之前重写了 gitosis 以便它可以与具有 SSH 协议的其他存储库一起使用,我保证这就是它的工作方式,并且上述内容会成功。
  • 如果您想查看定义此行为的代码,请查看 gitosis 源代码中 ssh.py 内的 filterAuthorizedKeys
  • 虽然这可能对 gitosis 有效,但它似乎破坏了 gitolite。也很遗憾,这本来是设置 rsync 的一种非常简单的方法。
  • 好的...所以它确实工作。只要确保它不是您的 gitolite 帐户使用的相同密钥之一!
【解决方案2】:

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

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

如果你想知道为什么我回答 gitolite 而不是 gitosis,gitosis 未维护、已弃用且已死,请停止使用并切换到 gitolite

【讨论】:

    【解决方案3】:

    我使用这个script 开始我的自定义脚本,它正在使用

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

    也许这会有所帮助?

    【讨论】:

    • 尽管您可以访问存储库,但您还有额外的工作要做,以便维护某种备份用户并循环存储库克隆、更新等。rsync 是一种更直接的方法我的意见。
    • 嗯,是的,一段时间后我仍在使用 rsync 进行服务器备份,所以是的,拉/推的想法不是最好的,这就是为什么我编辑了上面的帖子并删除了支持的部分通过 git。虽然我必须说我在 git-mirrors 上玩得很开心......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2011-08-03
    • 2021-06-14
    • 1970-01-01
    相关资源
    最近更新 更多