Резервное копирование репозиториев Gitosis с Rsync? - PullRequest
3 голосов
/ 10 июня 2010

У меня есть стандартная настройка 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 ]

1 голос
/ 21 апреля 2011

Самым простым способом IMO было бы добавить пользовательский ключ в ваш файл authorized_keys для пользователя git.

Добавить запись над строкой, которая говорит ### autogenerated by gitosis, DO NOT EDIT в качестве пользователя root под /home/git/.ssh/authorized_keys(на большинстве систем Linux), и вы должны быть в порядке.Gitosis по умолчанию игнорирует пользовательские записи в файле authorized_keys при его регенерации.

Если вы хотите еще больше заблокировать сервер, вы всегда можете добавить пользовательскую директиву command= перед вводом ключа, прибегая к помощи "rsync"ssh lock down "дает вам http://sixohthree.com/1458/locking-down-rsync-using-ssh в качестве первого удара, который должен помочь вам начать.

Единственный другой способ захвата файлов через rsync без перепрыгивания через некоторые случайные переключения пользователя (как вuser-> root-> git переключатели) будет использовать ssh для подключения в качестве пользователя root и получения файлов вместе с ним.

Оба работают как пользователь root и ssh'ing как пользователь git, предоставляяПользовательская запись authorized_keys должна предоставить вам права доступа к файлам, которые вы хотите использовать rsync.

0 голосов
/ 21 апреля 2011

gitolite указывает rsync в качестве одной из поддерживаемых внешних команд, для которых он может предоставить авторизацию.

Я этого не делал, но, полагаю, вы можете настроить это с помощью специального ключа ssh, которому разрешено использовать rsync в каждом репозитории. Первым шагом является установка $RSYNC_BASE в файле gitolite.rc. example.conf показывает, как указать разрешения для rsync.

И если вам интересно, почему я ответил о гитолите , а не о гитозе, он не поддерживается, устарел и мертв, прекратите его использование и переключитесь на гитолит .

0 голосов
/ 17 апреля 2011

Я использовал этот скрипт для начала для своих пользовательских скриптов, и он использует

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

Может быть, это может помочь?

...