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é :
- sudo a2dissite svn
- sudo /etc/init.d/apache2 reload
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 :
- cd ~
- mkdir -p domaine.tld-svn
- sudo svnadmin dump /var/svn/domaine.tld > domaine.tld-svn/domaine.tld.dmp
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 :
- 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 :
- 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 :
- #On se replace dans notre home puisque le fichier de sauvegarde y a été copié
- cd ~
- #Puis on importe son contenu
- sudo svnadmin load /var/svn/domaine.tld/ < domaine.tld-svn/domaine.tld.dmp
- #Puis on redonne les bons droits
- chown -Rvf www-data:www-data /var/svn/domaine.tld/
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 :
- #On copie le contenu du répertoire récursivement à la place de celui créé lors de l'initialisation de l'instance
- cp -Rvf domaine.tld-svn/domaine.tld.trac/* /var/trac/domaine.tld/
- #Puis on redonne les bons droits
- chown -Rvf www-data:www-data /var/trac/domaine.tld
- #Enfin, on upgrade et resynchronise trac avec le dépot
- trac-admin /var/trac/domaine.tld upgrade
- trac-admin /var/trac/domaine.tld wiki upgrade
- trac-admin /var/trac/domaine.tld/ repository resync '*'
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) :
- /var/svn/domaine.tld/conf/authz
- /var/svn/domaine.tld/conf/passwd
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.