Comment puis-je sauvegarder pas à pas les dépôts SVN .... je veux sauvegarder les dépôts eux-mêmes .... je ne veux pas les sauvegarder en tant que dossier ....
Réponses
Trop de publicités?étape 1 Créez un script ou un fichier batch qui exécute la commande
svnadmin dump REPOS_PATH > backupfile
svnadmin est un programme qui vient avec svn, il se trouvera dans le dossier bin
backupfile est le fichier vers lequel le dépôt sera sauvegardé
REPOS_PATH est l'emplacement du dépôt
voir http://svnbook.red-bean.com/en/1.1/re31.html pour plus de détails
étape 2. Exécutez le script/fichier batch pour tester la sauvegarde.
étape 3. Testez que la sauvegarde fonctionne en exécutant la commande
svnadmin load test_path < backupfile
Essayez maintenant le dépôt créé dans test_path pour vous assurer qu'il fonctionne correctement - cela devrait être le cas et en prime, il devrait fonctionner avec les versions plus récentes de svn.
Suivant un script que vous pouvez enregistrer sous : svnbackup.sh
#!/bin/bash
appname=` basename $ 0`
#
# Définir certaines valeurs par défaut
#
increment = 100
start = ""
default_history_file = "last_saved"
history_file = ""
dumpfilepath = "."
dumpfilename = "dumpfile"
verbose = false
sshopts = ""
identity = ""
#
# Fonction pour expliquer comment utiliser le programme
#
fonction utilisation () {
écho
écho "$ appname [-h]"
écho "$ appname [-v] [-i increment] [-s start_rev] [--scp distant] [--identity ssh-key] [--ssh-opts options ssh] [--history-file fichier] [--out-dir nom du répertoire] [--compress (gzip|bzip2)] [--file-name nom de base du fichier de sauvegarde] chemin du dépôt svn"
chat - < "$ dumpfile"
RC = $?
$ verbose && écho
si [ $ RC -ne 0 ]
alors
rm -f "$ dumpfile"
retourner $ RC
fi
$ verbose && écho "Créé $ dumpfile"
si [ "$ dest"! = "" ]
alors
si [ -z "$ identité"]; alors
scp $ sshopts "$ dumpfile" "$ dest"
autre
scp $ sshopts -i $ identité "$ dumpfile" "$ dest"
fi
RC = $?
rm -f "$ dumpfile"
fi
retour $ RC
}
#
# Faire les sauvegardes incrémentielles
#
si [[ $ le plus récent -eq $ loop_first]]
alors
$ verbose && écho "Aucun nouveau change-set à sauvegarder"
sortie 0
fi
laisser boucle_last = ($ loop_first + $ increment)
si [[ $ loop_first -ne 0 ]]
alors
laisser boucle_first = ($ loop_first + 1)
fi
tant que [[ $ loop_first -le $ plus récent ]]
faire
si [ $ loop_last -lt $ plus récent]
alors
# Un "incrément" complet
sauvegarde_revs $ loop_first $ loop_last "$ dépôt" || exit 1
#echo $ loop_last > $ history_file
autre
# Au cas où les dernières revs ne constituent pas un "incrément" complet
sauvegarde_revs $ loop_first $ youngest "$ dépôt" || sortie 1
#echo $ le plus récent > $ history_file
fi
laisser boucle_first = ($ loop_last + 1)
laisser boucle_last = ($ loop_last + $ increment)
fait
sortie 0
- Arrêtez le serveur en cours d'exécution
- Copiez l'intégralité du répertoire contenant le dépôt, les hooks et les fichiers de configuration.
- Copiez également votre configuration Apache, si vous l'utilisez et qu'elle n'est pas stockée dans le répertoire ci-dessus de toute façon.
c'est tout.
Vous pouvez restaurer sur la même machine, ou une machine similaire (par exemple, de Windows à Windows). Si vous souhaitez restaurer de Windows à Linux (par exemple), alors vous voudrez probablement sauvegarder et charger le dépôt à la place. Vous devrez quand même copier le reste du répertoire également.
Les suggestions d'utiliser rsync pour copier tout est une bonne idée (mais vous devrez arrêter le serveur pour obtenir toujours une bonne sauvegarde), ou utilisez svnsync qui est un excellent utilitaire de sauvegarde incrémentielle pour SVN. (vous devrez quand même copier les hooks et les configurations aussi - je synchronise ces fichiers avec rsync et svnsync le dépôt)