3

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

4

3 回答 3

1

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

### autogenerated by gitosis, DO NOT EDIT在(在大多数 Linux 系统上)以 root 用户身份的行上方添加一个条目,/home/git/.ssh/authorized_keys您应该一切顺利。authorized_keysGitosis 默认情况下在重新生成文件时会忽略文件的自定义条目。

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

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

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

于 2011-04-21T18:15:17.160 回答
0

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

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

也许这会有所帮助?

于 2011-04-16T21:52:37.500 回答
0

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

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

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

于 2011-04-21T19:50:00.390 回答