2010-06-10 13 views
3

J'ai une configuration de gitose standard que je voudrais sauvegarder en utilisant rsync. Lorsque je tente:Sauvegarde des dépôts de gitose avec rsync?

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

ou

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

Il se débrouille pas de fichiers du référentiel. Assez sûr que cela a à voir avec la façon dont l'utilisateur 'git' n'a pas de mot de passe et la propriété complète de tous les fichiers dans sa structure de répertoire/home/git/repositories. Puisque vous ne pouvez pas 'ssh git' ou 'su git' je ne peux pas atteindre le niveau d'autorisation correct. Alors, comment utiliser rsync pour sauvegarder tous mes dépôts de gitose?

+1

Personne? On dirait que cela devrait être une fonction assez courante pour ceux qui gèrent leur propre serveur de gitose. – Karl

Répondre

1

La manière la plus simple d'IMO serait d'ajouter une clé personnalisée dans votre fichier authorized_keys pour l'utilisateur git.

Ajouter dans une entrée au-dessus de la ligne qui indique ### autogenerated by gitosis, DO NOT EDIT en tant qu'utilisateur root sous /home/git/.ssh/authorized_keys (sur la plupart des systèmes Linux) et vous devriez être prêt à partir. Par défaut, Gitosis ignore les entrées personnalisées du fichier authorized_keys lors de la régénération.

Si vous voulez verrouiller le serveur vers le bas plus, vous pouvez toujours ajouter une directive personnalisée command= avant l'entrée clé, googler « rsync ssh verrouiller » vous donne http://sixohthree.com/1458/locking-down-rsync-using-ssh comme le premier coup, ce qui devrait vous aider à démarrer. La seule autre façon de récupérer les fichiers sur rsync sans passer par des cercles de commutation utilisateur aléatoires (comme dans les commutateurs user-> root-> git) serait d'utiliser ssh pour se connecter en tant qu'utilisateur root et récupérer les fichiers avec il.

Les deux s'exécutant en tant qu'utilisateur root et ssh'ing en tant qu'utilisateur git en fournissant une entrée personnalisée authorized_keys devraient vous donner les autorisations dont vous avez besoin pour accéder aux fichiers que vous voulez rsync.

+0

Je crois que l'ensemble du fichier authorized_keys est généré automatiquement, cela ne fonctionnera donc pas. – Arrowmaster

+0

Notez mon commentaire sur le fait que gitosis ignore les entrées 'authorized_keys' personnalisées lors de la réécriture du fichier' authorized_keys'. Toute entrée ajoutée manuellement sera conservée, peu importe ce qui se trouve dans la keydir. J'ai réécrit la gitose auparavant pour qu'elle fonctionne avec d'autres référentiels qui ont des protocoles SSH, je garantis que c'est ainsi que cela fonctionne et que ce qui précède va réussir. – photoionized

+0

Si vous voulez regarder dans le code qui définit ce comportement, regardez 'filterAuthorizedKeys' à l'intérieur de' ssh.py' dans la source gitosis. – photoionized

0

j'utilisais ce script pour commencer mes scripts personnalisés, et il utilise

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

Peut-être que cela pourrait aider?

+0

Bien que vous ayez accès aux référentiels, vous avez encore du travail à faire pour maintenir une sorte d'utilisateur de sauvegarde et pour boucler le clonage des dépôts, la mise à jour, etc. rsync est une approche beaucoup plus directe à mon avis. – quickshiftin

+0

bien oui, après un certain temps j'utilise encore rsync pour la sauvegarde du serveur, donc oui, l'idée de tirer/pousser n'était pas la meilleure, c'est pourquoi j'ai édité le post supérieur et supprimé cette partie avec sauvegarde via git. Bien que je dois dire que je m'amusais bien avec git-mirrors ... –

0

gitolite répertorie rsync comme l'une des commandes externes prises en charge pour lesquelles elle peut fournir une autorisation.

Je ne l'ai pas fait mais je crois que vous pouvez le configurer avec une clé ssh spécifique permettant d'utiliser rsync sur chaque dépôt. La première étape consiste à définir dans le fichier gitolite.rc. Le example.conf indique comment spécifier les autorisations pour rsync. Vous comprendrez pourquoi j'ai répondu à propos de gitolite au lieu de la gitose, la gitose n'est pas maintenue, est déconseillée et est morte, arrêtez de l'utiliser et passez à gitolite.