Question

Est-il possible d'utiliser Apache Subversion (SVN) comme outil de sauvegarde à usage général? (Une sorte de alternative à rsync .)

Était-ce utile?

La solution

J'ai trouvé cet article très descriptif sur l'utilisation de svn pour sauvegarder votre répertoire personnel, et plus encore:

  

J'utilise Subversion pour sauvegarder mes machines Linux. Avec un peu de créativité, il couvre facilement:

     
      
  • Instantanés quotidiens et sauvegarde hors site.
  •   
  • Ajout et suppression faciles de fichiers et de dossiers.
  •   
  • Suivi détaillé des versions de fichiers.
  •   
     

Il permet également quelques fonctionnalités supplémentaires:

     
      
  • Enregistrez régulièrement des e-mails dans les journaux pour suivre l'activité du système de fichiers via les points d'ancrage des événements de Subversion.
  •   
  • Les utilisateurs peuvent demander à extraire leurs dossiers personnels de toute révision de référentiel.
  •   
  • De nouveaux serveurs ou des serveurs de remplacement peuvent être configurés avec quelques commandes svn checkout.
  •   

Source: http: // www. .mythago.net / svn_for_backup.html

Également trouvé cet article qui montre un exemple de gestion de version de votre répertoire personnel. Cela vous permet d’amener votre environnement avec vous en extrayant votre répertoire personnel sur une nouvelle machine. J'avais l'habitude de faire quelque chose de similaire et je l'ai trouvé très utile.

Autres conseils

Lorsque vous utilisez SVN pour sauvegarder des fichiers binaires, gardez à l'esprit que SVN doublera la taille de vos fichiers, car il conserve une copie locale de chaque fichier (dans le fichier .svn / text-base).

En dehors de cela, j'utilise également SVN pour une sauvegarde. Ajoutez simplement tous les fichiers puis validez via un script.

En tant qu '"objectif général" sauvegarde, je dirais que ce n’est probablement pas la meilleure des idées, principalement pour les raisons données par d’autres (beaucoup de dossiers en trop et un espace disque gaspillé). Si vous souhaitez simplement conserver des sauvegardes, encore une fois, je dirais qu'il existe probablement de meilleures options, en fonction de vos besoins, par exemple: devez-vous conserver chaque version de chaque fichier ou certains clichés de vos données seraient-ils suffisants?

Cependant, dans mon bureau, nous avons une petite équipe de 6 personnes qui travaillent avec des fichiers partagés (par exemple: manuels de politiques et de procédures, formulaires d’enregistrement, etc.). Souvent, les membres de l’équipe travaillent à distance (de chez eux ou en voyage) et souvent hors ligne. Plutôt que d’utiliser une configuration centralisée de dossiers partagés, nous utilisons SVN pour donner à chaque personne une copie de travail complète du dossier sur laquelle elle peut travailler, qu’elle se réfère et se synchronise chaque fois que possible. Cela fait d'une pierre deux coups: tout le monde peut accéder aux fichiers et les modifier même en mode hors connexion, ce qui nous donne une très grande redondance dans nos sauvegardes. Si mon ordinateur portable prend feu , ce n'est pas compliqué, je peux simplement en consulter un autre exemplaire. (évidemment sur un autre ordinateur). Si le serveur prend feu, nous aurons les sauvegardes du référentiel à restaurer. Si le serveur ET toutes les sauvegardes du référentiel prennent feu, il ne reste plus que les anciennes versions de fichiers. Toutes les données actuelles seront perdues si le serveur, les sauvegardes de votre référentiel et tous les ordinateurs soumis à une vérification s'enflamment mystérieusement.

Comme certains l’ont déjà dit, SVN ne supprimera jamais d’informations du référentiel, ce qui signifie que si vous souhaitez uniquement conserver des sauvegardes pendant 60 jours, alors, vous ne pouvez pas. Ce n'est pas tout à fait vrai. Grâce à l’utilisation de exportation , dump et import , vous pouvez effacer efficacement les anciennes versions de fichiers. Ce n'est pas beau, mais c'est possible.

Une chose qui me dérangerait beaucoup, ce sont les dossiers '.svn', que svn met dans tous les dossiers qu’elle suit.

Ils ont l’air ennuyeux. Lorsque vous copiez un dossier, vous devez vous rappeler de ne pas les copier (sinon, votre sandbox risque d’être irrité) et il est beaucoup plus difficile de passer par plusieurs dossiers car il y a souvent beaucoup de hits. dans les dossiers de ressources .svn.

J'aime l'idée d'utiliser un contrôle de source pour contrôler votre environnement. Mais personnellement, je ne choisirais pas svn pour ce travail. J'irais pour quelque chose comme git. Mais ce n’est probablement que moi ...

J'utilise SVN pour sauvegarder mon ordinateur, mais aussi pour synchroniser mon ordinateur portable et mon ordinateur de bureau. Mais il a les problèmes mentionnés dans les réponses précédentes, principalement le doublement de l'utilisation du disque. Je pense également que l’excès de fichiers et le processus SVN qui vérifient constamment les modifications apportées à mon disque dur ralentissent mon ordinateur.

Je tiens toutefois à souligner que SVN est idéal pour la synchronisation de différentes machines. Vous bénéficiez également de la possibilité d'extraire un fichier n'importe où si vous en avez besoin - je le fais même dans mon navigateur via interface Web, parfois.

En résumé, je suis partagé sur l'utilisation de SVN pour la sauvegarde à usage général. Mais si vous le faites, je recommande de ne pas stocker des bibliothèques telles que des films, des photos et de la musique, car elles ont tendance à être volumineuses (souffrant énormément du double emploi de l'espace) et immuables. - vous n'avez pas besoin d'un système de gestion de version pour cela, car dans les rares cas où vous modifiez un fichier, vous n'avez généralement pas besoin des anciennes versions (et SVN n'est pas bon pour créer / stocker des diffs de fichiers binaires, enregistre la nouvelle version complète du fichier). Donc, à moins que SVN ne puisse être adapté (une intention de longue date) à ces cas, je suggère d'utiliser une autre méthode pour sauvegarder ces types de fichiers.

Vous pouvez également envisager de bup - Système de sauvegarde de fichiers hautement efficace basé sur le format de fichier git . Il repose sur la manière dont git stocke les données, ce qui est très efficace pour stocker les fichiers et leurs différences.

J'ai utilisé CVS comme substitut du fantôme, je ne vois donc pas pourquoi.

Je suis content de pouvoir baliser une ligne de base: vous pouvez modifier les ordinateurs gérés.

Évidemment, cela fonctionne mieux sous Unix que sous Windows.

Ce qui me dissuaderait de cette idée, c’est que, pour une utilisation générale, toutes les données binaires seraient copiées chaque fois qu’elles étaient modifiées, alors que les systèmes de gestion du contenu textuel autour desquels se basent peuvent être facilement mis à jour sous la forme de diffs.

Pour que vous puissiez le faire, sachez que vous ne voudrez peut-être pas l'utiliser pour gérer des tâches telles que les référentiels de photos si vous effectuez beaucoup de travaux d'édition.

L'avantage des solutions de sauvegarde plus générales (par exemple, Time Machine) est qu'elles peuvent cumuler plusieurs modifications binaires après un certain temps pour économiser de l'espace. Je ne sais pas à quel point ce serait facile à faire avec SVN, git ou mercurial.

L’utilisation de SVN pour les sauvegardes peut fonctionner. Cependant, avec le temps, il peut s'avérer difficile de supprimer les anciennes révisions inutiles. Supposons que vous ne souhaitiez conserver que 30 ou 60 jours de sauvegarde. SVN ne fournit pas un moyen facile de supprimer toute histoire antérieure à X jours. Si vous n’avez pas la possibilité de purger l’ancien historique, votre disque de sauvegarde finira par manquer d’espace.

Voici une citation de Livre SVN sur la commande svndumpfilter :

  

Depuis Subversion stocke tout dans   un système de base de données opaque, tentant   réglages manuels est imprudent, sinon tout à fait   difficile. Et une fois que les données ont été   stocké dans votre référentiel, Subversion   généralement ne fournit pas un moyen facile   pour supprimer ces données. [13]

     
    

[13] C'est d'ailleurs une fonctionnalité, pas un bug.

  

J'ai trouvé unison un meilleur choix que svn pour un rsync. alternative.

Cette déclaration de JoaoPSF est incorrecte:

  

(et SVN n'est pas doué pour créer / stocker des différences de fichiers binaires, il enregistre la nouvelle version complète du fichier)

Voir cette citation de Comment Subversion gère-t-il les fichiers binaires :

  

Notez que le fait qu'un fichier soit binaire n'a pas d'incidence sur la quantité d'espace de référentiel utilisé pour stocker les modifications apportées à ce fichier, ni sur la quantité de trafic entre le client et le serveur. Pour le stockage et la transmission, Subversion utilise une méthode de différenciation qui fonctionne aussi bien sur les fichiers binaires que sur les fichiers texte. cela n'a aucun rapport avec la méthode diffing utilisée par la commande svn diff.

La sauvegarde de / etc avec le contrôle de code source peut être très utile lorsque vous souhaitez annuler une modification qui affecte votre système, expérimenter des modifications ou transférer des modifications d’un serveur à un autre.

Toutefois, la multitude de répertoires .svn de Subversion peut gêner cette opération, pas seulement lors de la recherche, mais dans certains cas, comme les dossiers * .d, des systèmes mal conçus risquent d'interpréter les dossiers .svn eux-mêmes comme contenant des données de configuration.

Je préfère maintenant utiliser Mercurial pour sauvegarder / etc car il place un seul dossier .hg sous / etc. Pour une sauvegarde réelle et pas seulement pour le contrôle de version, vous devez copier ce dossier .hg ailleurs.

Pour utiliser SVN comme sauvegarde sur Linux, procédez comme suit:

  1. Créer un référentiel vide.
  2. Extraction du référentiel vide dans l'arborescence de dossiers à sauvegarder.
  3. Utilisez l'extrait de code suivant (svnauto). Vous devez remplacer " myuser " et " mypassword " avec des informations d'identification valides pour votre référentiel:
    #!/bin/sh
    svn status --depth=infinity --username=myuser --password=mypassword > /tmp/svnauto_tmp.list
    cat /tmp/svnauto_tmp.list | grep '^?' | sed -e 's/^?       /svn add --depth=infinity --force --username=myuser --password=mypassword "/g' -e 's/$/@"/g' | sh
    cat /tmp/svnauto_tmp.list | grep '^!' | sed -e 's/^!       /svn delete --username=myuser --password=mypassword "/g' -e 's/$/@"/g' | sh
    rm -f /tmp/svnauto_tmp.list
    svn update . --username=myuser --password=mypassword
    svn commit --username=myuser --password=mypassword --message "Automatic backup"

Le script ci-dessus va ajouter / supprimer et mettre à jour tous les fichiers et sous-répertoires du répertoire en cours. Pour l'utiliser simplement cd dans le dossier que vous voulez sauvegarder (qui doit être une copie de travail bien sûr), et exécutez svnauto . Notez que vous devez avoir installé grep et sed sur votre système, qui crée un fichier temporaire dans / tmp. Il peut être utilisé à partir d'un travail cron pour une validation nocturne en utilisant le script cron suivant:

#!/bin/sh
export LANG=en_US.UTF-8 && cd /my/directory && echo Starting backup $(date) > /root/backup_log.txt && /root/svnauto >> /root/backup_log.txt 2>&1 && echo Finished backup. >> /root/backup_log.txt && cat /root/backup_log.txt

Ce script cron suppose que / my / directory est le dossier que vous voulez sauvegarder (remplacer au besoin). Cela suppose également que vous avez mis le script svnauto dans / racine . Il crée un journal et l'affiche à la fin. Un détail supplémentaire: le premier export est nécessaire pour que svn trouve la langue appropriée. Vous devrez peut-être adapter cette ligne à votre propre langue pour que cela fonctionne.

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