====== TP : Sauvegarder sa base de données keepassx avec git ======
* Objet : Sauvegarder sa base de données keepassx avec git
* Niveau requis : {{tag> avisé}}
* Commentaires : TP relatif à [[doc:systeme:keepassx|la page concernant keepassx]]
* Suivi :
* Création par [[user>smolski]] le 25/04/2013
* Testé par [[user>captnfab]] le 25/04/2013
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=11604|C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Sauvegarder sa base de données keepassx avec git =====
Supprimer un mot de passe par erreur, casser la base de données en faisant une mauvaise manip, lors du plantage du logiciel, d'un bug de mise à jour, disque dur qui flanche... autant de choses que l'on ne veut pas rencontrer.
Pour s'en protéger, il est possible de stocker son fichier de pass dans un dépôt git.
Nous allons présenter ici deux solutions :
* Version locale \\ //Un dépôt git sur votre machine principale, et une copie de la bdd sur votre clé usb. // **Particularités** :
* Un seul dépôt git
* Il faut veiller à ce que la version de la clé soit la version à jour et la recopier dans le git à chaque modification externe.
* Version (dé)centralisée
* Un dépôt git par copie de la bdd
* Script automatisant la mise à jour en cas de modification
* Un dépôt git central devant être accessible via internet
**testé par captnfab le 26/04/2013**
==== Version locale ====
=== Création du dépôt ===
* On crée le dossier devant héberger le dépôt, par exemple :
mkdir -p ~/perso/important
* On crée le dépôt proprement dit :
cd ~/perso/important
git init
=== Initialisation du dépôt ===
* On rajoute la base de données dans le dépôt git :
mv ~/perso/mes_pass.kdb .
git add mes_pass.kdb
git commit -a -m "Base de donnée initiale"
* On rajoute un script de lancement rapide :
cat << EOF > lanceur.sh
#!/bin/sh
DOSSIER="\$HOME/perso/important/"
BDD="mes_pass.kdb"
cd "\$DOSSIER"
keepassx "./\$BDD"
git commit -a --author="\$USER@\$(hostname)" -m "Mise à jour..."
EOF
chmod +x lanceur.sh
git add lanceur.sh
git commit -a -m "Script de lancement"
=== Utilisation ===
* On se rend dans le dossier ''important'' :
cd /mon/dossier/important
* Et on y lance le lanceur :
./lanceur.sh
==== Version (dé)centralisée ====
=== Création du dépôt ===
* On se logue sur la machine devant contenir le dépôt :
ssh machine0
* On crée le dossier devant héberger le dépôt, par exemple :
mkdir -p ~/srv/git/important.git
* On crée le dépôt proprement dit :
cd ~/srv/git/important.git/
git init --bare
* On se déloggue de la machine :
exit
=== Initialisation du dépôt ===
* On crée le dossier devant contenir le dossier ''important'' :
mkdir -p ~/perso/
* On récupère le dépôt git distant :
cd ~/perso/
git clone machine0:srv/git/important.git
* On rajoute dans celui-ci la base de données :
cd important
mv ~/perso/mes_pass.kdb .
git add mes_pass.kdb
git commit -a -m "Base de donnée initiale"
* On rajoute un script de lancement rapide :
cat << EOF > lanceur.sh
#!/bin/sh
BDD="mes_pass.kdb"
git pull
keepassx "./\$BDD"
git commit -a --author="\$USER@\$(hostname)" -m "Mise à jour..."
git push
EOF
chmod +x lanceur.sh
git add lanceur.sh
git commit -a -m "Script de lancement"
* On met à jour le dépôt distant en créant la branche ''master'' :
git push origin master
=== Sur les autres machines / sur la clé usb ===
* On crée un dossier devant contenir le dossier ''important'' :
mkdir /mon/dossier
* On récupère le dépôt distant :
cd /mon/dossier
git clone machine0:srv/git/important.git
=== Utilisation ===
* On se rend dans le dossier ''important'' :
cd /mon/dossier/important
* Et on y lance le lanceur :
./lanceur.sh