2010-06-10 5 views
3

rsync를 사용하여 백업하려는 표준 gitosis 설정이 있습니다. 내가하려고하면 :rsync가 포함 된 gitosis 저장소를 백업 하시겠습니까?

rsync -avz [email protected]:/home/git git_origin/ 

또는

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

그것은 더 저장소 파일을 대처하지

. 확실히 그것이 '자식'사용자가/home/git/repositories 디렉토리 구조에있는 모든 파일의 암호와 완전한 소유권을 가지고 있지 않은 것과 관련이 있습니다. git '또는'su git '을 실행할 수 없기 때문에 올바른 권한 수준을 얻을 수 없습니다.

그렇다면 어떻게 rsync를 사용하여 모든 gitosis 저장소를 백업 할 수 있습니까?

+1

아무도 없습니까? 자신의 gitosis 서버를 운영하는 사람들에게는이 기능이 상당히 보편적으로 작동해야하는 것처럼 보입니다. – Karl

답변

1

가장 쉬운 방법은 IMO는 git 사용자의 authorized_keys 파일에 맞춤 키를 추가하는 것입니다.

/home/git/.ssh/authorized_keys (대부분의 Linux 시스템에서) 아래에 루트 사용자로 ### autogenerated by gitosis, DO NOT EDIT이라고 표시된 행 위에 항목을 추가하면 좋을 것입니다. Gitosis는 기본적으로 재생성 할 때 authorized_keys 파일에 대한 사용자 지정 항목을 무시합니다.

더 아래로 서버를 잠 그려면, 당신은 항상 "rsync와 ssh를 잠글는"당신이 시작할 수 있어야 최초의 히트로 http://sixohthree.com/1458/locking-down-rsync-using-ssh을 제공 인터넷 검색, 키 입력하기 전에 사용자 정의 command= 지시어를 추가 할 수 있습니다.

(user-> root-> git 스위치처럼) 임의의 사용자 전환 후프를 뛰어 넘지 않고 rsync를 통해 파일을 잡는 유일한 방법은 ssh를 사용하여 root 사용자로 연결하고 그것.

루트 사용자로 실행 중이고 사용자 정의 authorized_keys 항목을 제공하여 git 사용자로 ssh'ing하면 둘 모두 rsync에 필요한 파일에 액세스하는 데 필요한 권한을 제공해야합니다.

+0

전체 authorized_keys 파일이 자동 생성되어 작동하지 않는다고 생각합니다. – Arrowmaster

+0

gitosis가'authorized_keys' 파일을 다시 쓸 때 커스텀'authorized_keys' 엔트리를 무시한다는 사실에 대한 제 코멘트를 주목하십시오. 수동으로 추가 된 항목은 keydir에있는 항목과 상관없이 유지됩니다. 내가 SSH 프로토콜을 가지고있는 다른 저장소와 함께 작동하도록하기 전에 gitosis를 다시 작성했습니다. 이것이 작동하는 방법이며 위의 내용이 성공할 것이라고 보증합니다. – photoionized

+0

이 동작을 정의하는 코드를 살펴 보려면 gitosis 소스의'ssh.py '안에있는'filterAuthorizedKeys'를보십시오. – photoionized

0

내 사용자 정의 스크립트의 시작이 script을 사용하고 있었다, 그리고 그 도움이 될 수 어쩌면

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

를 사용?

+0

리포지토리에 액세스 할 수 있지만 일종의 백업 사용자를 유지 관리하고 리포지토리 복제, 업데이트 등을 반복하기 위해 추가 작업이 필요합니다. rsync는 내 의견으로는 더 직접적인 접근 방식입니다. – quickshiftin

+0

그래, 시간이 지나면 서버 백업을 위해 여전히 rsync를 사용하고 있습니다. 그래, 끌어 당기거나 푸는 아이디어가 최고가 아니 었습니다. 그래서 내가 위 게시물을 편집하고 git를 통해 백업하여 그 부분을 제거했습니다. 나는 진실한 거울을 가지고 꽤 재미있는 시간을 보냈다. –

0

gitolite은 인증을 제공 할 수있는 지원되는 외부 명령 중 하나로 rsync를 나열합니다.

나는 이것을하지 않았지만 모든 저장소에서 rsync를 사용할 수있는 특정 ssh 키를 사용하여 설정할 수 있다고 생각합니다. 첫 번째 단계는 gitolite.rc 파일에 $RSYNC_BASE을 설정하는 것입니다. example.conf은 rsync에 대한 사용 권한을 지정하는 방법을 보여줍니다.

당신은 gitosis 대신에 gitolite에 대해 왜 대답했는지 궁금해하고 있습니다. gitosis는 유지 보수가되지 않습니다. 사용이 중지되고 죽었습니다. 사용을 중지하고 gitolite으로 전환하십시오.