Journal Sauvegarde automatique des fichiers de conf

Posté par (page perso) .
Tags : aucun
0
19
mai
2006
Salut les gens !

pour cause de securitech 2006 (n'oubliez pas la conf ce soir !), je n'ai pas posté mes idées depuis longtemps, ça vous a manqué, hein ? Non ? Tant pis, j'en remet un couche quand même :)

L'idée du vendredi est donc un utilitaire qui sauvegarde automatiquement vos fichiers de conf dans un repository subversion ou cvs ...

Vous pouvez lui dire de surveiller /etc et /home/.* par exemple, rajouter des commentaires, faire des groupes de config, revenir en arrière, voir les différences entre versions, forcer l'enregistrement automatique de tous les changements sur certains fichiers comme /etc/passwd, etc.

Vous pouvez voir qui a fait quoi sur quel fichier, comprendre les changements avec les commentaires, plus de headers de 400 lignes avec chaque changement + date + trigramme ...

Ca permet d'éviter :
- les toto.conf.20060519-revert_dns, toto.conf.20060418-cleaning etc. et le lien de toto.conf sur le dernier en date. Y en a forcément un qu'on loupe ou on modifie en oubliant de changer le lien, etc.
- les tar de /etc avec la date sans savoir ce qu'il y a dedans
- les hurlements quand on vient de s'apercevoir que la nouvelle config foire mais qu'on sait pas laquelle des 200 lignes modifiées et qu'il faut absolument remettre en état pour les prochaines 13 secondes

Exemple :

$pySVNconf commit
files changed :
N° file Elapsed time
1 /etc/passwd 1h13m
2 /etc/bind/db.fr 3m
3 /etc/bind/db-r.fr 4m
4 /tmp/frigo 2d
5 /etc/totoro.conf 11m
file(s) ? 1, 2, 5
comment ? J'ai fait une modif parceque je le vaut bien


Pour "file(s) ?", on peut rajouter des raccourcis comme :
/etc/bind/* = tous les fichiers modifiés qui commencent par 2 et 3
* = tout ou entrée direct = tout
* -5 = tout sauf le 5
* <1h = tous les fichiers modifiés dans il y a moins d'une heure

Ca existe déjà ? C'est complètement con ? J'ai qu'à m'organiser avec mes disquettes ?

Après bien sur, il faut que la "base" de modifs soit facile à sauvegarder, restaurer, comment faire si on sauvegarde à plusieurs en même temps (héhé SVN sait gérer ça), comment chosir les bons fichiers, comment grouper avec un fichier déjà commit, etc.
  • # rdiff-backup

    Posté par . Évalué à 5.

    Perso, je fait tous les jours une sauvegarde de /etc avec rdiff-backup.
    En cas de problème, je peux revenir à la version de la veille
    Avant de lancer le backup mon script exécute un dpkg --get-selections > /etc/liste_deb
    En cas de gros crash: install de base, dpkg --set-selections, restauration de /etc et "normalement" ça roule.
  • # cfengine

    Posté par . Évalué à 1.

    Si je me trompe pas cfengine est fait pour ca...
  • # Ca existe déjà

    Posté par (page perso) . Évalué à 4.

    Ca existe déjà, d'autres y ont pensé.

    ~ sous SVN :
    http://www.onlamp.com/pub/a/onlamp/2005/01/06/svn_homedir.ht(...)
    http://toykeeper.net/tutorials/svnhome

    organisation avec des liens symboliques :
    http://www.debian-administration.org/users/Steve/weblog/102

    Ca a le mérite en plus de le synchronisation entre plusieurs machines, au prix de faire attention à avoir des fichiers de confs modulaires (par ex, tailler par défaut du gnome terminal différente sur le portable et sur le 21 pouces du bureau)

    Attention aussi à séparer les fichiers privés, surtout dans le cas du ~ (par exemple les clé privées ssh, etc).
  • # Rsync

    Posté par . Évalué à 1.

    Perso je fait ça avec Rsync :
    - un repertoire mirroir exact ;
    - un repertoire par jour avec les fichiers effacés/modifiés par rapport à l'ancienne sauvegarde.

    Un petit bout d'exemple

    date=`date "+%Y%m%d-%HH%M"`
    repincremental="/home/sauve/backups/WWW/HOME-$date"
    mkdir $repincremental
    #la commande rsync tient en une seule ligne !
    rsync --backup --backup-dir=$repincremental --delete -r -t \
    --exclude-from=/usr/local/etc/rsync-exlude-www.conf \
    rsync://sauvegarde@---lamachineasauvegarder---/home/
    /home/sauve/WWW/HOME/
  • # la difficulté

    Posté par . Évalué à 5.

    c'est de faire la différence entre les modifications personnelles et les modifications dues à des mises-à-jour de paquets (cf debian unstable, gentoo ou autre).

    l'autre problème est de faire en sorte que les fichiers qui doivent vraiment rester cacher le restent...

    j'avais vu une astuce sur les listes debian pour faire ca en svk (traduction approchée inline)

    # Install svk
    apt-get install svk

    # Initialize a depot in /root/.svk --
    # Initialisation du dépôt.
    svk depotmap --init

    # Import /etc making it a working copy.
    # Importer /etc et en faire un répertoire de travail
    svk import --to-checkout //etc /etc

    # Make your depot not that readable
    # Le monde ne doit pas pouvoir tout lire.
    chmod -R go-rwx ~/.svk

    # Remove volatile files from revision control
    # Ne pas suivre les fichiers qui changent tout le temps.
    cd /etc
    svk rm -K adjtime ld.so.cache

    ...and voilà, you have /etc/ under revision control, without CVS or .svn
    or {arch} files around. The syntax of svk is just like the syntax of
    svn, of which it's a distributed extension.

    L'avantage, c'est qu'apparemment, ca marche comme svn, sans mettre de fichiers de contrôle dans la vraie arborescence /etc.

    Je n'ai pas testé.
  • # FSVS

    Posté par . Évalué à 2.

    Pour une solution a base de subversion, il existe FSVS, une surcouche spécialisée dans le contrôle de révisions de morceaux de systèmes de fichiers. Entre autres, il sauvegarde également les permissions et les dates de modification des fichiers.

    http://fsvs.tigris.org/

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.