Sauvegarder un dossier avec git

Préambule
git est avant tout un outils conçut pour gérer du code source et donc des fichiers textes. Je vous recommande donc de l’utiliser uniquement pour ce genre de fichiers (fichiers de configuration et scripts).

L’avantage de gestionnaire de version pour ce type de tâche, c’est qu’il vous permettra de garder un historique des fichiers. Ainsi vous n’aurais jamais perdu une ancienne version. L’avantage d’un gestionnaire de version décentralisé (comme git, svk, mercurial, bazzar,…), c’est que si vous utilisez plusieurs ordinateurs avec la même configuration vous pourrais effectuer vos sauvegardes de n’importe la quelle de ses machines sans problème.

Il est a noter pour les administrateurs qui gèrent un parc de machines identique qu’il est très intéressant d’utiliser un gestionnaire de version avec un serveur qui redistribueras les fichiers de configuration à toutes les machines du parc. La mise en place d’une telle solution n’est pas décrite dans ce document.

Installation
Tout d’abord il faut installer git :

sudo aptitude install git-core

Utilisation
Création de commit
Admettons que l’on veut sauvegarder le dossier /etc. Nous allons commencer par créer un dépôt git dans /etc :

cd /etc && git init

Ensuite on va créer un fichier .gitignore à la racine du dépôt qui va servir à filtrer les fichiers que l’on ne souhaite pas sauvegarder par exemple les fichiers finissants par ~ :

cat /etc/.gitignore
*~

Ensuite on crée ajout les fichiers au dépôt. Deux méthode existent :
La simple qui ajoute tout ce qui n’est pas filtré par le « .gitignore » :

git add .

La seconde consiste à ajouter à la main chaque dossiers et fichiers que l’on veut sauvegarder :

git add init.d apt/source.list

Une fois que l’on a ajouté tout ce que l’on veut, on vérifie les fichiers ajoutés grâce à la commande :

git status

Elle vous indique les fichiers ajoutés, les fichiers pas ajouté (en omettant ce qui sont ignorés par le fichier .gitignore) et les fichiers modifiés.

On va maintenant créer notre premier commit de la manière la plus simple qui soit :

git commit -m "Message que vous souhaitez"

(l’option -m peut être omise c’est alors votre éditeur de texte qui se lance, si vous n’enregistrez pas de message de commit, git ne créeras pas le commit)

Vous pouvez faire d’autres commit. Il ne faut pas oublier de faire un « add » sur les fichiers nouvellement créé et surtout utilisez l’option -a lors des commit pour inclure dans le commit les fichiers modifiés (sinon il faut utiliser add sur chacun d’eux).

On peut maintenant lister les commits avec « git log ».

Copie sur le média
Maintenant il faut envoyer ça vers le média de sauvegarde que vous souhaitez (réinscriptible quand même). Pour pour cela on utilise la commande ci-dessous :

git clone /etc /media/BACKUP/etc-backup # etc-backup ne doit pas exister

Maintenant un simple ls dans le dossier de destination vous montreras que tout c’est bien passé.

Pour mettre à jour la sauvegarde, on se place dans le dossier la contenant et on utilise la commande :

git pull /etc master

Et voila vous êtes maintenant capable de faire un backup de n’importe quel dossier de votre ordinateur avec git.

[Edit = 8/01/10] : petites corrections orthographiques

Hello
voila un outils que je ne connaît pas :slightly_smiling:
sinon le lien ici te dit rien ?
http://forum.debian-fr.org/viewtopic.php?f=8&t=10696

sinon il est évident que c est pour sauvegarder que les fichier et pas une machine m’enfin je pense l’intégrer a mon tuto si tu es d’accords ?

J’ai créé un nouveau sujet parce que je trouvait ça plus difficile pour moi pour retrouver la chose facilement. Mais n’hésite pas à l’intégrer à tout ce que tu veut ou à le modifier. d’ailleurs si quelqu’un a des remarques.

Qu’en penses tu??

C’est fait :mrgreen:

J’en étais pas tout à fait sûr donc j’ai cherché.

Alors pour la précision git est un outil bien particulier contrairement à ces homologues la gestion des informations lors des commits est complètement différente pour la plupart ils utilisent le diff entre fichiers git non.

Ainsi git peut être utiliser pour sauvegarder aussi des fichiers binaires. Cela n’alourdira pas plus le dépôt. Il peut être aussi pertinent de sauvegarder de cette manière ses fichiers de conf (/etc comme le précisait MisterFreez mais aussi) .bashrc répertoire caché dans /home son /var/www pour les projets web (si c’est le path d’accès au web) bref amusé vous bien :wink:

J’ai écrit un tutoriel pour bien débuter avec l’utilisation de git en ligne de commande.


C’est en Français et en Anglais.