Documentation technique : Debian
Documentation basée sur la distribution Debian

> > > Déplacer un serveur svn sur un autre serveur

Déplacer un serveur svn sur un autre serveur

Lors d’un changement de serveur, il peut être nécessaire de transférer également le contenu du dépot subversion vers le nouveau serveur. Nous allons montrer ici comment déplacer notre dépôt domaine.tld vers le nouveau serveur créé ici.

Avant toute chose, si vous avez installé le serveur svn comme indiqué sur ce site, il est préférable de couper l’accès afin de ne pas se retrouver avec des commits oubliés lors de la sauvegarde. Pour ce faire, on désactive le virtualhost Apache dédié :

  1. sudo a2dissite svn
  2. sudo /etc/init.d/apache2 reload

Télécharger

Sauvegarde du serveur original

Nous allons tout d’abord faire une sauvegarde du serveur source dans un fichier de dump "domaine.tld.dump" de notre répertoire home :

  1. cd ~
  2. mkdir -p domaine.tld-svn
  3. sudo svnadmin dump /var/svn/domaine.tld > domaine.tld-svn/domaine.tld.dmp

Télécharger

Dans ce fichier seront sauvegardées chaque révision du serveur subversion.

Il est également nécessaire de sauvegarder le contenu de votre instance trac (Wiki, tickets etc...) par la commande :

  1. sudo trac-admin /var/trac/domaine.tld hotcopy domaine.tld-svn/domaine.tld.trac

Cette sauvegarde est une simple copie du répertoire de l’instance.

Il est dorénavant nécessaire de copier ces fichiers sur le nouveau serveur, sur lequel vous avez bien entendu un accès ssh. Nous allons utiliser la commande scp pour ce faire :

  1. sudo scp -r -p domaine.tld-svn/ user_distant@serveur_distant:domaine.tld-svn/

Quelques explications sur cette commande, on copie de manière sécurisée à travers le protocole ssh (en utilisant scp) le répertoire "domaine.tld-svn" sur le serveur dont l’adresse est "serveur_distant" (nous aurions pu utiliser ici une IP) et l’utilisateur dont on a les identifiants est "user_distant", puis on écrit ce répertoire récursivement (option "p") en gardant les attributs de fichiers (droits et dates de modification : option "p") dans le répertoire home en le nommant "domaine.tld-svn" (correspond à la partie de la commande ":domaine.tld-svn/", nous aurions pu utiliser un chemin relatif depuis ce répertoire home, ou un répertoire absolu également si l’utilisateur utilisé le permet).

Ainsi, après connexion sur le nouveau serveur, en listant le contenu de son répertoire home, l’utilisateur "user_distant" devrait avoir accès à ce répertoire et les fichiers qu’il contient.

Restauration sur le nouveau serveur

Sur le nouveau serveur, nous allons créer le même serveur que sur le précédent. On refera donc les étapes de création du dépôt et celle de configuration apache à l’identique.

On devrait alors avoir notre dépôt "domaine.tld" disponible mais vide. On importe donc ensuite le contenu de notre sauvegarde par la commande :

  1. #On se replace dans notre home puisque le fichier de sauvegarde y a été copié
  2. cd ~
  3. #Puis on importe son contenu
  4. sudo svnadmin load /var/svn/domaine.tld/ < domaine.tld-svn/domaine.tld.dmp
  5. #Puis on redonne les bons droits
  6. chown -Rvf www-data:www-data /var/svn/domaine.tld/

Télécharger

On devrait ainsi voir s’ajouter chaque ancien commit à notre nouveau dépot.

On réinstalle une instance trac également similaire à celle de l’ancien serveur. Puis on recopie les anciennes données :

  1. #On copie le contenu du répertoire récursivement à la place de celui créé lors de l'initialisation de l'instance
  2. cp -Rvf domaine.tld-svn/domaine.tld.trac/* /var/trac/domaine.tld/
  3. #Puis on redonne les bons droits
  4. chown -Rvf www-data:www-data /var/trac/domaine.tld
  5. #Enfin, on upgrade et resynchronise trac avec le dépot
  6. trac-admin /var/trac/domaine.tld upgrade
  7. trac-admin /var/trac/domaine.tld wiki upgrade
  8. trac-admin /var/trac/domaine.tld/ repository resync '*'

Télécharger

Vous pouvez également récupérer ensuite les anciens fichiers d’autorisations en les recopiant ou les déplaçant vers leurs emplacements respectifs sur le nouveau serveur. Ces fichiers sont (dans notre cas) :

  1. /var/svn/domaine.tld/conf/authz
  2. /var/svn/domaine.tld/conf/passwd

Télécharger

Il en va de même de tout autre fichier de configuration modifié.

On devrait dorénavant avoir retrouvé un environnement de versionning similaire à celui de l’ancien serveur.

  • Auteur :
  • Publié le :
  • Mis à jour : 26/04/12

4 commentaires


  • Le 3 octobre 2011 à 21:32, par marcimat En réponse à : Déplacer un serveur svn sur un autre serveur

    À partir de trac 0.12 la commande resync est déplacée et s’utilise par exemple comme suit :
    trac-admin /var/trac/arscenic.org/ repository resync '*'

    Par ailleurs, si on migre d’un trac 0.11 à 0.12, il y a une procédure de migration à suivre, détaillée ici : http://trac.edgewall.org/wiki/TracUpgrade

    Ce qui m’a fait faire l’équivalent, après la copie de mes anciens répertoires trac à leur nouveaux emplacement, de :

    1. trac-admin /var/trac/arscenic.org upgrade
    2. trac-admin /var/trac/arscenic.org wiki upgrade
    3. trac-admin /var/trac/arscenic.org/ repository resync '*'
    4. # pour alternc :
    5. trac-admin /var/trac/arscenic.org deploy /var/alternc/html/k/kent1/www/arscenic.org/svn

    Télécharger

    Répondre à ce message

  • Le 20 juillet 2012 à 09:53 En réponse à : Déplacer un serveur svn sur un autre serveur

    Hey,

    I’ve a question really simple. My /var partition is full and i want to move the /var/svn folder to the /home partition.

    How can i do that. I’ve tried
    "mv /var/svn /home/svn" and next to setup the apache configuration to point the new folder, but it doesnt work. How can I do ?

    Hope readding from u soon,

    Gabriel

    My email to answer : gabriel@wetrust.fr

    Répondre à ce message

Qui êtes-vous ?
  • [Se connecter]
Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.