mardi 5 février 2013

Gnu / Linux Debian Wheezy Automatiser sauvegardes Dirvish

Bonjour :-)

Objectif : Ne plus avoir à me soucier d'un "crash" de mon disque interne de 1 Tib sur mon système Gnu / Linux Debian Wheezy

L'intérêt de Dirvish par rapport à une sauvegarde "rsync" classique est que l'on peut remonter dans le temps et avoir différentes versions d'un même fichier à différentes dates et réparer une erreur sur un fichier à partir d'un certain moment, par exemple ...


Synopsis

1 - Satisfaire les pré-requis à l'installation de Dirvish.
2 - Configurer Dirvish et son execution quotidienne.
3 - Initialiser les sauvegardes et vérifications diverses.

J'ai écris ce tutoriel parce que cette installation m'a pris quelques jours, et je n'ai pas trouvé de tuto qui soit détaillé sur le Web ( en français en tout cas ).

Je débutes en Perl, c'est vaste, je ne connais pas bien Dirvish non plus, et ma mémoire ... pas terrible ! Ce tuto me servira aussi à moi je pense.





Matériel : CM Gigabyte GA-B75M-D3V / i5 3450 Socket 1155 / 4Gib / 1 Tib Seagate Barracuda 7100 tours / minutes . PC assemblé par mes soins.

OS :  Gnu / Linux  Debian Wheezy Gdm3 Xfce4 avec un noyau Linux : 3.2.0-4-amd64

Logiciel de sauvegarde : Dirvish . Ce soft écrit en Perl n'a rien a envier à Time Machine d'Apple par exemple, fonctionne aussi bien en local qu'en client / serveur.

Disque externe : My Passport 500 Go , partition de sauvegarde étendue de 400 Gib, labellisée "sauvegarde", sur port USB 2.0 ( j'ai des soucis en USB3 sur ce disque USB2 )

J'ai découvert ce soft dans Les Cahiers de l’Admin Debian Squeeze , livre qui m'aide bien souvent quand j'ai des soucis.

Je suis en "testing" parce que mon matériel est trop récent et la version "stable" ne tourne pas dessus.

1 - Satisfaire les pré-requis à l'install de Dirvish


La première source de documentation pour installer Dirvish se trouve évidemment sur le site de Dirvish

On y lit que les pré-requis pour cette installation sont :


- rsync version 2.5.6 ou supérieure
- perl5 et les modules perl :
      POSIX
      Getopt::Long
      Time::ParseDate
      Time::Period by Patric Ryan

- Beaucoup d'espace disque, ils recommandent aussi d'utiliser LVM

- Pour ssh, je ne m'en suis pas occupé pour le moment parce que ma sauvegarde est locale
# rsync --version

rsync  version 3.0.9  protocol version 30



# perl --version

This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-gnu-thread-multi

(with 75 registered patches, see perl -V for more detail)

Copyright 1987-2011, Larry Wall


Pour avoir un historique de commande sous CPAN
 
# aptitude install libterm-readline-gnu-perl

Tout va bien jusque là, il faut maintenant installer les modules Perl :

- Getopt::Long

- Time::ParseDate
- Time::Period

Le module POSIX est installé par défaut.


Pour installer un module Perl, on utilise la commande cpan ( Comprehensive Perl Archive Network )


Si c'est la première fois que cpan est lancé, un minimun de configuration est indispensable :



# cpan --version
/usr/bin/cpan version 1.57 calling Getopt::Std::getopts (version 1.06 [paranoid]),
running under Perl version 5.14.2.
  [Now continuing due to backward compatibility and excessive paranoia.
   See ``perldoc Getopt::Std'' about $Getopt::Std::STANDARD_HELP_VERSION.]

CPAN.pm requires configuration, but most of it can be done automatically.

If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes] 



ALERT: 'make' is an essential tool for building perl Modules.

Please make sure you have 'make' (or some equivalent) working.

Autoconfigured everything but 'urllist'.


Now you need to choose your CPAN mirror sites.  You can let me

pick mirrors for you, you can select them from a list or you
can enter them by hand.

Would you like me to automatically choose some CPAN mirror

sites for you? (This means connecting to the Internet) [yes] 
Trying to fetch a mirror list from the Internet
Fetching with LWP:
http://www.perl.org/CPAN/MIRRORED.BY

Looking for CPAN mirrors near you (please be patient)

................................... done!

New urllist

  http://mirror.ibcp.fr/pub/CPAN/
  http://ftp.sunet.se/pub/lang/perl/CPAN/
  http://mirrors.teentelecom.net/CPAN/

Autoconfiguration complete.


commit: wrote '/root/.cpan/CPAN/MyConfig.pm'


You can re-run configuration any time with 'o conf init' in the CPAN shell

Nothing to install!

On s'assure donc de la présence de make :

# aptitude install make

Les NOUVEAUX paquets suivants vont être installés : 

  make 
0 paquets mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 396 ko d'archives. Après dépaquetage, 1 172 ko seront utilisés.
Prendre :  1 http://ftp2.fr.debian.org/debian/ wheezy/main make amd64 3.81-8.2 [396 kB]
 396 ko téléchargés en 6s (61,8 ko/s)                                                                                                                                                                              
Sélection du paquet make précédemment désélectionné.
(Lecture de la base de données... 168000 fichiers et répertoires déjà installés.)
Dépaquetage de make (à partir de .../make_3.81-8.2_amd64.deb) ...
Traitement des actions différées (« triggers ») pour « man-db »...
Paramétrage de make (3.81-8.2) ...

On exécute donc cpan :

 # cpan

Si c'est la première fois que cpan est lancé, vous aurez sans doute un message vous demandant de le mettre à jour, faites le.

Installez aussi YAML sinon vous aurez des avertissements à propos desquels je ne sais rien ! pas eu le temps d'approfondir !

cpan[1]> install YAML
YAML is up to date (0.84).

Enfin on installe les modules réclamés par Dirvish :


cpan[2]> install POSIX
Running install for module 'POSIX'
The most recent version "1.31" of the module "POSIX"
is part of the perl-5.17.4 distribution

Ok pour POSIX

cpan[3]>install Getopt::Long
Getopt::Long is up to date (2.38)

C'est ok pour ce module aussi mais c'est parce que je l'ai installé, il ne l'était pas

cpan[4]> install Time::ParseDate
Time::ParseDate is up to date (2011.0517)

Idem

cpan[5]> install Time::Period
Time::Period is up to date (1.23).

Pour mettre à jour CPAN :

cpan[6]> upgrade

ça peut prendre 20-30 minutes

Ça y est, Perl est installé correctement pour que Dirvish puisse l'exploiter comme il l'entend. Si ce n'est pas votre cas des commandes comme : 

# dirvish-runall

ne fonctionneront pas et il faudra faire fonctionner Dirvish en manuel, comme je l'ai fait pendant quelques temps.


À ce point il est bien sûr indispensable d'Installer Dirvish :

# aptitude install dirvish
Les NOUVEAUX paquets suivants vont être installés : 
  dirvish libtime-modules-perl{a} libtime-period-perl{a} ssh{a} 
0 paquets mis à jour, 4 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 115 ko d'archives. Après dépaquetage, 458 ko seront utilisés.
Voulez-vous continuer ? [Y/n/?] 
Prendre :  1 http://ftp2.fr.debian.org/debian/ wheezy/main libtime-modules-perl all 2011.0517-1 [38,2 kB]
Prendre :  2 http://ftp2.fr.debian.org/debian/ wheezy/main libtime-period-perl all 1.20-8 [15,2 kB]
Prendre :  3 http://ftp2.fr.debian.org/debian/ wheezy/main dirvish all 1.2.1-1.2 [60,9 kB]
Prendre :  4 http://ftp2.fr.debian.org/debian/ wheezy/main ssh all 1:6.0p1-4 [1 240 B]
 115 ko téléchargés en 5s (20,7 ko/s)
Sélection du paquet libtime-modules-perl précédemment désélectionné.
(Lecture de la base de données... 168034 fichiers et répertoires déjà installés.)
Dépaquetage de libtime-modules-perl (à partir de .../libtime-modules-perl_2011.0517-1_all.deb) ...
Sélection du paquet libtime-period-perl précédemment désélectionné.
Dépaquetage de libtime-period-perl (à partir de .../libtime-period-perl_1.20-8_all.deb) ...
Sélection du paquet dirvish précédemment désélectionné.
Dépaquetage de dirvish (à partir de .../dirvish_1.2.1-1.2_all.deb) ...
Sélection du paquet ssh précédemment désélectionné.
Dépaquetage de ssh (à partir de .../ssh_1%3a6.0p1-4_all.deb) ...
Traitement des actions différées (« triggers ») pour « man-db »...
Paramétrage de libtime-modules-perl (2011.0517-1) ...
Paramétrage de libtime-period-perl (1.20-8) ...
Paramétrage de dirvish (1.2.1-1.2) ...

Paramétrage de ssh (1:6.0p1-4) ...


2 - Configurer Dirvish

Fichiers permettant de piloter Dirvish :

/etc/dirvish/master.conf

puis 1 fichier par "vault" ( jeu de sauvegarde ) dans la "bank", espace de stockage où se feront les sauvegardes.

/bank/vault/dirvish/default.conf

Script de pilotage des sauvegardes :

/etc/dirvish/dirvish-cronjob

Autres commandes ( faire un man de dirvish )

dirvish(8)
dirvish.conf(5)
dirvish-runall(8)
dirvish-expire(8)
dirvish-locate(8)
ssh(1)
rsync(1)
Time::ParseDate(3pm)
strftime(3)

Il faut maintenant maintenant définir l'espace de stockage où se feront les sauvegardes, c'est la "bank" dans la terminologie de Dirvish.

Sur mon disque externe "My Passport", j'ai nommée ma partition étendue de 400 Gib "sauvegarde", et lorsque je "plugue" mon disque externe, il est monté automatiquement dans :

# mount | grep sauvegarde

/dev/sdc5 on /media/sauvegarde type ext3 (rw,nosuid,nodev,relatime,sync,errors=continue,barrier=1,data=ordered,uhelper=hal)



Oui, je sais que je ferais mieux d'être en ext4 ... pas grave !

J'ai décidé de sauvegarder dans ma "bank" /media/sauvegarde, mes partitions suivantes :

/ ----------------------> vault : system
/usr ------------------> vault : usr
/var ------------------> vault : var
/home ----------------> vault: home
/home/private ------> vault : private


# ls -lh /media/sauvegarde/

total 44K


drwxr-xr-x   5 root root 4,0K févr.  5 09:58 home

drwxrwx---   2 root root  16K avril  9  2012 lost+found
drwxr-xr-x   5 root root 4,0K févr.  5 10:04 private
drwxr-xr-x   5 root root 4,0K févr.  5 09:53 system
drwxr-xr-x   5 root root 4,0K févr.  5 09:53 usr
drwxr-xr-x   5 root root 4,0K févr.  5 09:53 var

Ceci m'a permit de construire mon /etc/dirvish/master.conf :

# cat /etc/dirvish/master.conf 


# /etc/dirvish/master.conf
# Créé par moi le dimanche 3 février 2013
#en suivant la doc http://www.dirvish.org/debian.howto.html
#
bank:
                /media/sauvegarde
exclude:
               *~
               lost+found/
               /var/tmp/
               /var/run/
               /var/lock/
               /mnt/
               /media/
               /sys
               /dev/
               /proc/
               /tmp/
               /vmlinuz*
               /initrd*
               .gvfs
Runall:
                system 22:00
                var 22:00
                usr 22:00
                home 22:00
                private 22:00
expire-default: +15 days
expire-rule:
#              MIN HR DOM MON    DOW STRFTIME_FMT
                *       *     *        *           1       +3 months
                *       *     1-7     *            1       +1 year
                *       *     1-7    1,4,7,10      1
                *     10-20 *       *            *       +4 days
#              *       *       *       *           2-7    +15 days


Remarque importante : il faut absolument exclure .gvfs , sinon la sauvegarde du /home échouera lamentablement au bout de 2 heures ... grrrr .

C'est Gnome qui créé ce système de fichier dans ~/ , qui de plus est vide ...


~ ls -lhd .gvfs
dr-x------ 2 seb seb 0 févr.  5 10:42 .gvfs

ls -lhdi .gvfs
1 dr-x------ 2 seb seb 0 févr.  5 10:42 .gvfs

Ayant eu le pb, j'ai fait une recherche sur google, et en fait peu de gens ont compris que dans ce répertoire est monté un système de fichier à propos duquel je ne sais pas grand chose à part qu'il sert au montage automatique des périphérique USB :

# mount |grep gvfs

gvfs-fuse-daemon on /home/seb/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)

Ensuite il faut créer les 5 fichiers de configurations correspondants à chaque sauvegarde :

# cat /media/sauvegarde/system/dirvish/default.conf 

# Ce fichier a été créé par moi le dimanche 3 février 2013
# en suivant la doc : http://www.dirvish.org/debian.howto.html
#
client: Speedi5
tree: /
xdev: true
index: gzip
image-default: %Y-%m-%d
exclude:
                tmp

# cat /media/sauvegarde/var/dirvish/default.conf

# Ce fichier a été créé par moi le dimanche 3 février 2013
# en suivant la doc : http://www.dirvish.org/debian.howto.html
#
client: Speedi5
tree: /var
xdev: true
index: gzip
image-default: %Y-%m-%d
exclude:
                var/cache/apt/archives
                var/cache/man
                tmp
                var/tmp

# cat /media/sauvegarde/usr/dirvish/default.conf

# Ce fichier a été créé par moi le dimanche 3 février 2013
# en suivant la doc : http://www.dirvish.org/debian.howto.html
#
client: Speedi5
tree: /usr
xdev: true
index: gzip
image-default: %Y-%m-%d
exclude:

# cat /media/sauvegarde/home/dirvish/default.conf

# Ce fichier a été créé par moi le dimanche 3 février 2013
# en suivant la doc : http://www.dirvish.org/debian.howto.html
#
client: Speedi5
tree: /home
xdev: true
index: gzip
image-default: %Y-%m-%d
exclude:
                lost+found/
                private/
                seb/.gvfs/

# cat /media/sauvegarde/private/dirvish/default.conf
# Ce fichier a été créé par moi le dimanche 3 février 2013
# en suivant la doc : http://www.dirvish.org/debian.howto.html
#
client: Speedi5
tree: /home/private
xdev: true
index: gzip
image-default: %Y-%m-%d
exclude:
                lost+found/
                .gvfs/
Arrivé à ce point, il faut modifier le script /etc/dirvish/dirvish-cronjob pour l'adapter à notre config :

# cat /etc/dirvish/dirvish-cronjob

  1 #!/bin/sh
  2 #
  3 # commentaire de moi : modifié :
  4 #       -ligne 25 remplacée par ligne 26
  5 #       -ligne 41 mount_check /media/sauvegarde
  6 #       -Rajout ligne 43 et 44 pour sauvegarder la liste des paquets installés

  7 #
  8 # daily cron job for the dirvish package
  9 #
 10 if [ ! -x /usr/sbin/dirvish-expire  ]; then exit 0; fi
 11 if [ ! -s /etc/dirvish/master.conf ]; then exit 0; fi
 12
 13 mount_check() {
 14         mntout=`tempfile -p mount`
 15         mount $1 >$mntout 2>&1
 16         if [ ! -d $1/lost+found ]; then # only works for "real" filesystems :-)
 17                                         # (Yes, I know about reiserfs.)
 18                 echo "'mount $1' failed?! Stopping."
 19                 echo "mount output:"
 20                 cat $mntout
 21                 rm -f $mntout
 22                 exit 2
 23         fi
 24
 25 #if stat $1 | grep 'Inode: 2[^0-9]' >/dev/null; then # ditto
 26    if stat $1 | grep '/media/sauvegarde' >/dev/null; then # J'ai changé la ligne comme ça pour l'heure mais danger !

 27                 rm -f $mntout
 28                 return 0 # ok
 29         fi
 30         echo "$1 isn't inode 2 ?! Mount must have failed; stopping."
 31         echo
 32         stat $1
 33         echo "mount output:"
 34         cat $mntout
 35         rm -f $mntout
 36         umount $1
 37         exit 2
 38 } # Fin de la fonction mount_check()
 39
 40 # Example of how to mount and umount a backup partition...
 41 mount_check /media/sauvegarde
 42
 43 # Avant de faire la sauvegarde on sauvegarde la liste des paquets  installés :
 44 /etc/cron.daily/liste-paquet.sh

 45
 46 # on effectue maintenant les sauvegardes :
 47 /usr/sbin/dirvish-expire --quiet && nice --adjustment=-20 /usr/sbin/dirvish-runall --quiet
 48 rc=$?
 49
 50 # umount /backup || rc=$?
 51
 52 exit $rc


    Voilà !

    Si le disque n'est pas connecté au moment où la tâche cron / anacron est lancée, le script s'arrête proprement ( avec un code d'erreur 2 dans les deux cas de figure ... )

    Si le disque est présent, la sauvegarde démarre en tâche de fond avec une faible priorité ( 20 ) , ce qui ne dérange pas le travail ordinaire sur la machine.

    Maintenant il faut faire en sorte que le script /etc/dirvish/dirvish-cronjob s’exécute au quotidien grâce à cron / anacron et un lien symbolique placé dans /etc/cron.daily qui pointe vers lui, j'ai fait ça :

    # cd /etc/cron.daily

    # ln -s /etc/dirvish/dirvish-cronjob dirvish-cronjob

    # ls -lh /etc/cron.daily/dirvish-cronjob 

    lrwxrwxrwx 1 root root 28 févr.  4 00:15 /etc/cron.daily/dirvish-cronjob -> /etc/dirvish/dirvish-cronjob 

    3 - On va pouvoir ENFIN initialiser les sauvegardes : ben oui, pour le moment on n'a encore rien de concret  ! ;-)

    En ce qui me concerne j'avais 140 Gib à sauvegarder, ce qui m'a pris un peu moins de 2 H parce que j'ai lancée l'initialisation avec une priorité très élevée, pour accélérer le mouvement, sinon ça peut prendre la nuit !

    De plus j'ai sérialisées les 5 initialisations des 5 jeux de sauvegardes et j'ai surveillé comment ça se passait, pas de pb :


    # cd /media/sauvegarde

    for vault in system var usr home private ; do nice --adjustment=-20 dirvish --vault ${vault} --init ; done

    Vous pouvez suivre l'évolution de l'initialisation à la fois avec la cde top ( surveiller les procesus rsync ) et aussi avec gnome-system-monitor :


    $ gnome-system-monitor >/dev/null 2>&1 &
    [2] 2155





    Aujourd'hui ( 2013-02-05 ) cela fait 3 jours que j'ai mis ça en place, on peut vérifier ( j'ai éliminé les rep tree qui contiennent les données, parce que c'est trop volumineux ) :

    # cd /media/sauvegarde

    # for rep in system/ var/ usr/ home/ private/ ; do find ${rep} -regextype posix-egrep \! -iregex "${rep}.*tree.*" ;echo -e "\n\n" ; done


    system/

    system/2013-02-03
    system/2013-02-03/log
    system/2013-02-03/index.gz
    system/2013-02-03/summary
    system/2013-02-05
    system/2013-02-05/log
    system/2013-02-05/index.gz
    system/2013-02-05/summary
    system/2013-02-04
    system/2013-02-04/log
    system/2013-02-04/index.gz
    system/2013-02-04/summary
    system/dirvish
    system/dirvish/default.hist
    system/dirvish/default.conf



    var/

    var/2013-02-03
    var/2013-02-03/log
    var/2013-02-03/index.gz
    var/2013-02-03/summary
    var/2013-02-05
    var/2013-02-05/log
    var/2013-02-05/index.gz
    var/2013-02-05/summary
    var/2013-02-04
    var/2013-02-04/log
    var/2013-02-04/index.gz
    var/2013-02-04/summary
    var/dirvish
    var/dirvish/default.hist
    var/dirvish/default.conf


    usr/

    usr/2013-02-03
    usr/2013-02-03/log
    usr/2013-02-03/index.gz
    usr/2013-02-03/summary
    usr/2013-02-05
    usr/2013-02-05/log
    usr/2013-02-05/index.gz
    usr/2013-02-05/summary
    usr/2013-02-04
    usr/2013-02-04/log
    usr/2013-02-04/index.gz
    usr/2013-02-04/summary
    usr/dirvish
    usr/dirvish/default.hist
    usr/dirvish/default.conf


    home/

    home/2013-02-03
    home/2013-02-03/log
    home/2013-02-03/index.gz
    home/2013-02-03/summary
    home/2013-02-05
    home/2013-02-05/log
    home/2013-02-05/index.gz
    home/2013-02-05/summary
    home/2013-02-04
    home/2013-02-04/log
    home/2013-02-04/index.gz
    home/2013-02-04/summary
    home/dirvish
    home/dirvish/default.hist
    home/dirvish/default.conf


    private/

    private/2013-02-03
    private/2013-02-03/log
    private/2013-02-03/index.gz
    private/2013-02-03/summary
    private/2013-02-05
    private/2013-02-05/log
    private/2013-02-05/index.gz
    private/2013-02-05/summary
    private/2013-02-04
    private/2013-02-04/log
    private/2013-02-04/index.gz
    private/2013-02-04/summary
    private/dirvish
    private/dirvish/default.hist
    private/dirvish/default.conf



    Si la première sauvegarde prends du temps, les suivantes prennent seulement quelques minutes : 10 minutes pour le sys entier ! : vivent les liens durs ! ;-)

    Visualisons les fichiers default.hist, mis à jour à chaque sauvegarde et qui permettent à dirvish-expire de supprimer les sauvegardes ayant expirés ou justement de ne pas les supprimer et cela pour faire de la place ( ou pas ) juste avant la sauvegarde :

     # for rep in system/ var/ usr/ home/ private/ ; do find ${rep} -regextype posix-egrep -iregex "${rep}dirvish/default.hist" -exec echo cat '{}' \; -exec cat '{}' \; ;echo -e "\n\n" ; done


    cat system/dirvish/default.hist
    #IMAGE CREATED REFERECE EXPIRES
    2013-02-03 2013-02-03 22:39:32 default +1 year == 2014-02-03 22:38:48
    2013-02-04 2013-02-05 09:53:35 2013-02-03 +15 days == 2013-02-19 22:00:00
    2013-02-05 2013-02-06 12:39:17 2013-02-04 +15 days == 2013-02-20 22:00:00

    cat var/dirvish/default.hist
    #IMAGE CREATED REFERECE EXPIRES
    2013-02-03 2013-02-03 22:40:47 default +1 year == 2014-02-03 22:39:32
    2013-02-04 2013-02-05 09:53:53 2013-02-03 +15 days == 2013-02-19 22:00:00
    2013-02-05 2013-02-06 12:39:43 2013-02-04 +15 days == 2013-02-20 22:00:00


    cat usr/dirvish/default.hist
    #IMAGE CREATED REFERECE EXPIRES
    2013-02-03 2013-02-03 22:59:17 default +1 year == 2014-02-03 22:40:48
    2013-02-04 2013-02-05 09:58:43 2013-02-03 +15 days == 2013-02-19 22:00:00
    2013-02-05 2013-02-06 12:45:51 2013-02-04 +15 days == 2013-02-20 22:00:00


    cat home/dirvish/default.hist
    #IMAGE CREATED REFERECE EXPIRES
    2013-02-03 2013-02-03 23:54:06 default +1 year == 2014-02-03 22:59:44
    2013-02-04 2013-02-05 10:03:43 2013-02-03 +15 days == 2013-02-19 22:00:00
    2013-02-05 2013-02-06 12:49:32 2013-02-04 +15 days == 2013-02-20 22:00:00

    cat private/dirvish/default.hist
    #IMAGE CREATED REFERECE EXPIRES
    2013-02-03 2013-02-04 00:11:15 default +1 year == 2014-02-03 23:54:12
    2013-02-04 2013-02-05 10:04:59 2013-02-03 +15 days == 2013-02-19 22:00:00
    2013-02-05 2013-02-06 12:50:55 2013-02-04 +15 days == 2013-02-20 22:00:00

    On voit le temps qu'a pris l'initialisation : de 22h39 à 0h11 -> 1h52, soit un peu moins de  2H pour 140 Gib

    On voit aussi le temps consommé par la première sauvegarde incrémentale : de 09:53:35 à 10:04:59 -> 11 minutes ... à faible priorité : on ne s'aperçoit de rien.

    Il faut dire que les processeur i5 ont 4 chœurs et ça speed !



    13 Août 2013, voici ce que racontent les 10 dernier jours de sauvegardes :





    le fichier /media/sauvegarde/system/dirvish/default.hist ( gestion des expirations ) et un résumé de la façon dont s'est déroulée la dernière sauvegarde.



    /media/sauvegarde/system/2013-08-12# cat summary 
    client: Speedi5
    tree: /
    rsh: ssh
    Server: Speedi5
    Bank: /media/sauvegarde
    vault: system
    branch: default
    Image: 2013-08-12
    Reference: 2013-08-11
    Image-now: 2013-08-12 22:00:00
    Expire: +15 days == 2013-08-27 22:00:00
    exclude:
    *~
    lost+found/
    /var/tmp/
    /var/run/
    /var/lock/
    /mnt/
    /media/
    /sys
    /dev/
    /proc/
    /tmp/
    /vmlinuz*
    /initrd*
    .gvfs
    var/cache/apt/archives
    var/cache/man
    tmp
    var/tmp
    SET permissions devices numeric-ids stats xdev 
    UNSET checksum init sparse whole-file zxfer 


    ACTION: rsync -vrltH --delete -pgo --stats -D --numeric-ids -x --exclude-from=/media/sauvegarde/system/2013-08-12/exclude --link-dest=/media/sauvegarde/system/2013-08-11/tree / /media/sauvegarde/system/2013-08-12/tree
    Backup-begin: 2013-08-12 22:04:08
    Backup-complete: 2013-08-12 22:04:16
    Status: success



    On voit que la sauvegarde incrémentale des 605 Mib de tout ce qui n'est pas /usr /var /home a pris seulement 8 secondes ... parce qu'il n'y avait pas grand chose de nouveau



    Maintenant, si on veut trouver un fichier particulier dans ce fatras de fichiers / rep, on utilise la commande dirvish-locate jeu-de-sauvegarde motif-re-perl

    Ici par exemple je recherchais les fichiers /etc/apt/sources.list dans mon jeu de sauvegarde "system"

    # dirvish-locate system sources.list
    1 matches in 25 images
    /etc/apt/sources.list
        mai 30 05:10 2013-08-12, 2013-08-11, 2013-08-10, 2013-08-09, 2013-08-08
                     2013-08-07, 2013-08-06, 2013-08-04, 2013-08-03, 2013-08-02
                     2013-08-01, 2013-07-31, 2013-07-30, 2013-07-29, 2013-07-28
                     2013-07-21, 2013-07-14, 2013-07-07, 2013-06-30, 2013-06-23
                     2013-06-16, 2013-06-09, 2013-06-02
        avril  8 18:03 2013-05-26, 2013-05-27



     Dernière chose :  il vaut mieux exclure /media de /etc/updatedb.conf

    # cat /etc/updatedb.conf


    PRUNE_BIND_MOUNTS="yes"
    # PRUNENAMES=".git .bzr .hg .svn"
    PRUNEPATHS="/tmp /var/spool /media /home/private"
    PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs"


    de façon à diminuer le temps d’exécution d'updatedb et la taille du ficher /var/lib/mlocate/mlocate.db

    Je suis vraiment satisfait de mon installation, merci aux développeurs de Dirvish !


    J'espère n'avoir rien oublié.

    Maintenant j'ai l'esprit tranquille !


    Dirvish c'est super ! ;-)

    1 commentaire:

    1. Bien ... Bien ... Quelques erreurs, mais chapeau bandit ! ;-)))

      RépondreSupprimer