Question

Je suis nouveau sur SVN et j'aimerais savoir quelles méthodes sont disponibles pour sauvegarder des référentiels dans un environnement Windows ?

Était-ce utile?

La solution

Vous pouvez utiliser quelque chose comme (Linux) :

svnadmin dump repositorypath | gzip > backupname.svn.gz

Puisque Windows ne prend pas en charge GZip, c'est simplement :

svnadmin dump repositorypath > backupname.svn

Autres conseils

Nous utilisons svnadmin hotcopy, par exemple :

svnadmin hotcopy C:\svn\repo D:\backups\svn\repo

Selon le livre:

Vous pouvez exécuter cette commande à tout moment et créer une copie sécurisée du référentiel, que d'autres processus utilisent ou non le référentiel.

Vous pouvez bien sûr ZIP (de préférence 7-Zip) la copie de sauvegarde.À mon humble avis, c'est la plus simple des options de sauvegarde :en cas de catastrophe, il n'y a pas grand-chose à faire à part le remettre en place.

Il existe un script hotbackup.py disponible sur le site Web de Subversion qui est très pratique pour automatiser les sauvegardes.

http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in

Voici un script Perl qui :

  1. Sauvegarder le dépôt
  2. Copiez-le sur un autre serveur via SCP
  3. Récupérer la sauvegarde
  4. Créer un référentiel de test à partir de la sauvegarde
  5. Faire un test de paiement
  6. Vous envoyer un e-mail avec toute erreur (via cron)

Le script:

my $svn_repo = "/var/svn";  
my $bkup_dir = "/home/backup_user/backups";
my $bkup_file = "my_backup-";
my $tmp_dir = "/home/backup_user/tmp";   
my $bkup_svr = "my.backup.com";
my $bkup_svr_login = "backup";

$bkup_file = $bkup_file . `date +%Y%m%d-%H%M`;
chomp $bkup_file;
my $youngest = `svnlook youngest $svn_repo`;
chomp $youngest;

my $dump_command = "svnadmin  -q dump $svn_repo > $bkup_dir/$bkup_file ";
print "\nDumping Subversion repo $svn_repo to $bkup_file...\n";
print `$dump_command`;
print "Backing up through revision $youngest... \n";
print "\nCompressing dump file...\n";
print `gzip -9 $bkup_dir/$bkup_file\n`;
chomp $bkup_file;
my $zipped_file = $bkup_dir . "/" . $bkup_file . ".gz";
print "\nCreated $zipped_file\n";
print `scp $zipped_file $bkup_svr_login\@$bkup_svr:/home/backup/`;
print "\n$bkup_file.gz transfered to $bkup_svr\n";

#Test Backup
print "\n---------------------------------------\n";
print "Testing Backup";
print "\n---------------------------------------\n";
print "Downloading $bkup_file.gz from $bkup_svr\n";
print `scp $bkup_svr_login\@$bkup_svr:/home/backup/$bkup_file.gz $tmp_dir/`;
print "Unzipping $bkup_file.gz\n";
print `gunzip $tmp_dir/$bkup_file.gz`;
print "Creating test repository\n";
print `svnadmin create $tmp_dir/test_repo`;
print "Loading repository\n";
print `svnadmin -q load $tmp_dir/test_repo < $tmp_dir/$bkup_file`;
print "Checking out repository\n";
print `svn -q co file://$tmp_dir/test_repo $tmp_dir/test_checkout`;
print "Cleaning up\n";
print `rm -f $tmp_dir/$bkup_file`;
print `rm -rf $tmp_dir/test_checkout`;
print `rm -rf $tmp_dir/test_repo`;

Source du script et plus de détails sur la justification de ce type de sauvegarde.

j'utilise svnsync, qui configure un serveur distant comme miroir/esclave.Un serveur est tombé en panne il y a deux semaines et j'ai pu basculer l'esclave en position principale assez facilement (il suffisait de réinitialiser l'UUID du référentiel esclave à l'original).

Un autre avantage est que la synchronisation peut être effectuée par un intermédiaire, plutôt que comme une tâche sur l'un ou l'autre des serveurs.J'ai eu un client pour deux VPN qui synchronisent un référentiel entre eux.

copie chaude de svnadmin

svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH

Cette sous-commande effectue une sauvegarde « à chaud » complète de votre référentiel, y compris tous les hooks, fichiers de configuration et, bien sûr, les fichiers de base de données.

sauvegarde svn sur Google Code, une application console .NET.

  • Vous pouvez créer une sauvegarde du référentiel (décharge) avec svnadmin dump.

  • Vous pouvez ensuite l'importer en utilisant svnadmin load.

Référence détaillée dans le SVNBook :"Migration des données du référentiel à l'aide de svnadmin"

Fondamentalement, il est prudent de copier le dossier du référentiel si le serveur SVN est arrêté.(source: https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khUBrys%5B1-25%5D )

Donc, si vous êtes autorisé à arrêter le serveur, faites-le et copiez simplement le référentiel, soit avec un script, soit avec un outil de sauvegarde.Cobian Backup s'intègre bien ici car il peut arrêter et démarrer les services automatiquement, et il peut effectuer des sauvegardes incrémentielles afin que vous ne sauvegardiez que les parties du référentiel qui ont été modifiées récemment (utile si le référentiel est volumineux et que vous sauvegardez sur un emplacement distant. ).

Exemple:

  1. Installer la sauvegarde Cobian
  2. Ajoutez une tâche de sauvegarde :

    • Définissez la source sur le dossier du référentiel (par ex. C:\Repositories\),

    • Ajouter un événement de pré-sauvegarde "STOP_SERVICE" VisualSVN,

    • Ajouter un événement post-sauvegarde, "START_SERVICE" VisualSVN,

    • Définissez d’autres options selon vos besoins. Nous avons mis en place des sauvegardes incrémentielles, y compris la suppression des anciennes, la planification des sauvegardes, la destination, la compression, y compris.fractionnement des archives, etc.

  3. Profit!

il existe 2 méthodes principales pour sauvegarder un serveur svn, la première est la copie à chaud qui créera une copie de vos fichiers de référentiel, le principal problème avec cette approche est qu'elle enregistre les données sur le système de fichiers sous-jacent, vous pourriez donc avoir des difficultés à essayer de restaurer ce type de sauvegarde sur un autre type de serveur SVN ou sur une autre machine.il existe un autre type de sauvegarde appelé dump, cette sauvegarde ne sauvegardera aucune information du système de fichiers sous-jacent et sera disponible sur tout type de serveur SVN basé sur la subversion tigiris.org.

à propos de l'outil de sauvegarde, vous pouvez utiliser l'outil svnadmin (il est capable d'effectuer des copies à chaud et des vidages) à partir de l'invite de commande, cette console réside dans le même répertoire où réside votre serveur svn ou vous pouvez rechercher sur Google les outils de sauvegarde svn.

ma recommandation est que vous effectuiez les deux types de sauvegardes et que vous les sortiez du bureau sur votre compte de messagerie, votre service Amazon S3, FTP ou Azure Services, de cette façon vous aurez une sauvegarde sécurisée sans avoir à héberger le serveur svn quelque part en dehors de votre bureau.

Voici un outil GUI Windows pour faire un dump des dépôts Subversion locaux et distants :

https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html

La description de l'outil dit :

Cet outil simple permet de faire une sauvegarde dump d'un référentiel Subversion local et distant.Le logiciel fonctionne de la même manière que "svnadmin", mais il ne s'agit pas d'une interface graphique.Utilisez plutôt directement les bibliothèques Subversion pour permettre de créer un dump en mode autonome sans aucun autre outil supplémentaire.

J'espère que cette aide...

J'aime simplement copier l'intégralité du répertoire du dépôt sur mon emplacement de sauvegarde.De cette façon, si quelque chose se produit, vous pouvez simplement recopier le répertoire et être prêt à partir immédiatement.

Assurez-vous simplement de conserver les autorisations, si nécessaire.Habituellement, ce problème ne concerne que les machines Linux.

Pour les référentiels hébergés, vous pouvez depuis la version svn 1.7 utiliser svnrdump, ce qui est analogue à svnadmin dump pour les référentiels locaux.Ce article fournit une belle visite guidée, qui se résume essentiellement à :

svnrdump dump /URL/to/remote/repository > myRepository.dump

Après avoir téléchargé le fichier dump, vous pouvez l'importer localement

svnadmin load /path/to/local/repository < myRepository.dump

ou téléchargez-le sur l'hébergeur de votre choix.

Si vous utilisez le format de référentiel FSFS (par défaut), vous pouvez copier le référentiel lui-même pour effectuer une sauvegarde.Avec l'ancien système BerkleyDB, le référentiel n'est pas indépendant de la plate-forme et vous souhaiterez généralement utiliser le dump svnadmin.

Le sujet de documentation svnbook pour la sauvegarde recommande le svnadmin hotcopy commande, car elle s'occupera de problèmes tels que les fichiers en cours d'utilisation, etc.

@echo off
set hour=%time:~0,2%
if "%hour:~0,1%"==" " set hour=0%time:~1,1%
set folder=%date:~6,4%%date:~3,2%%date:~0,2%%hour%%time:~3,2%

echo Performing Backup
md "\\HOME\Development\Backups\SubVersion\%folder%"

svnadmin dump "C:\Users\Yakyb\Desktop\MainRepositary\Jake" | "C:\Program Files\7-Zip\7z.exe" a "\\HOME\Development\Backups\SubVersion\%folder%\Jake.7z" -sibackupname.svn

Il s'agit du fichier batch que j'exécute et qui effectue mes sauvegardes.

Pour la solution de sauvegarde quotidienne et complète, utilisez simplement le Scripts de sauvegarde SVN ici.

J'ai compilé les étapes que j'ai suivies dans le but de prendre une sauvegarde du référentiel SVN distant de mon projet.

install svk (http://svk.bestpractical.com/view/SVKWin32)

install svn (http://sourceforge.net/projects/win32svn/files/1.6.16/Setup-Subversion-1.6.16.msi/download)

svk mirror //local <remote repository URL>

svk sync //local

Cela prend du temps et indique qu'il récupère les journaux du référentiel.Il crée un ensemble de fichiers à l'intérieur C:\Documents and Settings\nverma\.svk\local.

Pour mettre à jour ce référentiel local avec le dernier ensemble de modifications du référentiel distant, exécutez simplement la commande précédente de temps en temps.

Vous pouvez maintenant jouer avec votre référentiel local (/home/user/.svk/local dans cet exemple) comme s'il s'agissait d'un dépôt SVN normal !

Le seul problème avec cette approche est que le référentiel local est créé avec une révision incrémentée par la révision réelle dans le référentiel distant.Comme quelqu'un l'a écrit :

La commande svk miror génère un commit dans le référentiel qui vient d'être créé.Ainsi, tous les commits créés par la synchronisation ultérieure auront des numéros de révision incrémentés de un par rapport au référentiel public distant.

Mais cela me convenait car je voulais seulement une sauvegarde du référentiel distant de temps en temps, rien d'autre.

Vérification:

Pour vérifier, utilisez le client SVN avec le référentiel local comme ceci :

svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/"  <local-dir-path-to-checkout-onto>

Cette commande va ensuite extraire la dernière révision du référentiel local.A la fin il est dit Checked out revision N.Ce N était une de plus que la révision réelle trouvée dans le référentiel distant (en raison du problème mentionné ci-dessus).

Pour vérifier que svk apportait également tout l'historique, l'extraction SVN a été exécutée avec diverses révisions plus anciennes en utilisant -r avec 2, 10, 50 etc.Ensuite, les fichiers dans <local-dir-path-to-checkout-onto> ont été confirmés comme provenant de cette révision.

A la fin, zippez le répertoire C:/Documents and Settings\nverma/.svk/local/ et rangez le zip quelque part.Continuez à faire cela régulièrement.

comme d'autres l'ont dit, hot-backup.py de l'équipe Subversion a des fonctionnalités intéressantes tout simplement svnadmin hotcopy

J'exécute une tâche planifiée sur un script Python qui analyse tous mes référentiels sur la machine et utilise hotbackup pour conserver plusieurs jours de hotcopies (paranoïaque de corruption) et un svnadmin svndump sur une machine distante.La restauration est vraiment facile à partir de là - jusqu'à présent.

1.1 Créer un dump à partir du référentiel SVN (Subversion)

svnadmin dump /path/to/reponame > /path/to/reponame.dump

Exemple réel

svnadmin dump /var/www/svn/testrepo > /backups/testrepo.dump

1.2 Dump créé par Gzip

gzip -9 /path/to/reponame.dump

Exemple réel

gzip -9 /backups/testrepo.dump

1.3 SVN Dump et Gzip Dump avec One-liner

svnadmin dump /path/to/reponame | gzip -9 > /path/to/reponame.dump.gz

Exemple réel

svnadmin dump /var/www/svn/testrepo |Â gzip -9 > /backups/testrepo.dump.gz

Comment sauvegarder (vider) et restaurer (charger) le référentiel SVN (Subversion) sous Linux.
Réf : sauvegarde et restauration svn subversion

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top