Archivez, archivez !!!!

Il existe une infinité de solutions pour faire ses propres archivages.
On a pu d’ailleurs en apprendre quelques-unes avec DigitalSpirit ou Szdavid.
Pour ma part, j’ai d’abord été séduit par Backup-manager mais je cherchais finalement plus simple et 100% de ma composition. Je suis donc parti de ce qu’avait proposé Szdavid…

Nous avons tous nos contraintes et nos possibilités.
Pour ma part, je ne laisse pas l’ordinateur allumé tout le temps, l’éteint le soir avant de me coucher.
Je ne peux donc pas monopoliser les ressources processeurs et disques durant l’archivage. Mais généralement (sauf avec Backup-manager), lors d’archivage, le PC se trouve fortement ralenti…

En revanche, toujours me concernant, je suis à l’aise coté disque dur puisque j’ai 100Go de dédié pour les sauvegardes, sur un disque interne réservé et différent de celui possédant les données importantes.
Enfin, je ne compte donc pas graver de CD ou DVD par manque de confiance… (Expérience faisant !)

« tar », « nice », et « crontab »…

  • La commande tar permet d’archiver ou de dés archiver un ou plusieurs fichiers.

Nous utiliserons la commande tar comme ceci:
tar cvpfz « chemin/fichier à créer » –exclude= »chemin à ne pas archiver » « ce qu’on doit archiver »

tar = commande d’archivage
c = création de l’archive
v = mode verbeux, c’est à dire avec affichage d’infos dans le terminal
p = préserve dates et droits
f = définir un nom de fichier d’archivage (sinon périphérique)
z = pour compresser (zipper) l’archive et ainsi gagner un peu d’espace disque

–exclude= -> Permet simplement d’exclure des répertoires de l’archivage (indispensable pour archiver un système).

Exemple (ce qu’on va presque faire):

tar cvpfz /media/Backup/Systeme/racine.tgz --exclude=/proc --exclude=/lost+found --exclude=/home --exclude=/mnt --exclude=/sys --exclude=/media --exclude=/tmp /

Les répertoires /proc , /lost+found , /mnt , /sys , /media , /tmp sont à exclure…
Pour /home, il s’agit d’un choix personnel car j’archive mon « home directory » à part…
Vous l’aurez compris, ici, j’archive la racine du sytème (« /« ).

  • La commande nice permet d’exécuter un programme avec une priorité d’ordonnancement modifiée.

Nous utiliserons cette commande ainsi :
nice -n « valeur comprise entre -20 et 19 » `commande à lancer`

-n « valeur comprise entre -20 et 19 » = permet d’ajuster la priorité de la commande dans l’intervalle -20 (le plus prioritaire) à 19 (le moins prioritaire).

Exemple (ce qu’on va faire):
nice -n 19 `tar cvpfz /media/Backup/Systeme/racine.tgz --exclude=/proc --exclude=/lost+found --exclude=/home --exclude=/mnt --exclude=/sys --exclude=/media --exclude=/tmp /`

  • La commande crontab permet de définir, pour l’utilisateur qui invoque la commande, les taches à éxecuter par cron. Je rappelle que cron (ou plus exactement crond) est un démon qui lance des commandes et des programmes à des dates et des heures spécifiées.

Crontab s’exécute ainsi:
crontab -l ou -r ou -e

-l = affiche le contenu des fichiers du repertoire cron de l’utilisateur. (En gros les taches à accomplir…)
-r = efface le fichier spécifié du répertoire cron de l’utilisateur (pour supprimer une tache)
-e = permet d’éditer le fichier cron.

Exemple (ce qu’on va faire):
sudo crontab -e

Cette commande ouvre un éditeur en mode texte afin d’éditer le fichier cron.
On execute cette commande avec sudo pour que l’archivage que nous programmerons sera lancé en super-utilisateur (obligatoire pour un accès illimité aux fichiers du système).

On édite ce fichier ainsi :
minute heure jour_du_mois mois jour_semaine  commande_à_exécuter
Exemple:
0 20 */10 * * /home/dramces/Sauvegardes/script/Backup.sh >> /media/Backup/Backup.log

Vous remarquerez que l’édition est très souple car on peut adapter « l’échéancier de taches » à notre sauce:
*/10 = N’importe quel jour (*) sur (/) 10 (correspond à tous les 10 jours).
* = N’importe quelle valeur.

Ici, on execute donc un script (script d’archivage que nous verrons plus loin) avec incrémentation (« >> ») d’un journal « Backup.log » (Merci Szdavid !) à 20H00 tous les 10 jours…

Mettons en forme tous cela avec un petit script:

1 – Créez un nouveau fichier texte qui sera votre futur script et pensez à le rendre executable…
Par exemple faites en console:
touch ~/Backup.sh
chmod +x ~/Backup.sh

Puis éditez votre script:
kate (ou gedit) ~/Backup.sh

Voici le script à y copier:

#!/bin/sh
echo "------------------------------------------------" #Pour séparer les évènements dans le journal
echo "Début Sauvegarde: $(date)" #Pour afficher la date et l'heure du début de l'archivage dans le journal
day=`date +%y-%m-%d` #Défini une variable comportant la date du jour
nice -n 19 `tar cvpfz /media/Backup/Systeme/$day.tgz --exclude=/proc --exclude=/lost+found --exclude=/home --exclude=/mnt --exclude=/sys --exclude=/media --exclude=/tmp /` #Commande permettant d'archiver la racine dans un fichier "date du jour".tgz
echo "Fin Sauvegarde: $(date)" #Pour afficher la date et l'heure de la fin de l'archivage

Rien ne vous empeche d’ajouter d’autre commandes d’archivage à la suite… Elles seront éxécutées les unes après les autres… (J’ai fais cela pour la racine (/), le home directory (/home), et toutes mes photos numériques -qu’on à trop souvent l’habitude d’oublier- (/media/photos/canon)…

2 – Editez votre crontab comme vu précédemment
sudo crontab -e
0 20 */10 * * /home/vous/Backup.sh >> 
/home/vous/Backup.log

Attention : sudo est imperatif, ce qui fait que vous devez précisez le chemin exact de votre script car si vous utilisez le signe « ~ », le script sera alors cherché dans le répertoire de « root » et non le votre.

3 – Verifiez la présence de la tache programmée…
sudo crontab -l

A vous de rendre vos archivages à votre image et ainsi d’adapter, peut-etre, cette méthode à vos habitudes…
La seule faille de cette methode, en ce qui me concerne une fois de plus, est la nécéssité d’avoir mon système de démarrer le jour J. C’est pourquoi, j’ai inscrit dans le calendrier de « korganizer » les jours de sauvegarde avec alarme (Evènement avec périodicité de tous les 10 jours…).

Bonne sauvegarde !!!


Publié

dans

par

Étiquettes :

Commentaires

10 réponses à “Archivez, archivez !!!!”

  1. Avatar de Infinity
    Infinity

    Salut!
    Je n’ai pas spécialement lu ton ticket, mais je voulais te prévenir que le lien vers ubuntu-fr, nommé "Linux" est mal formé: il pointe sur http://www.ubunut-fr.org/

  2. Avatar de Dramces
    Dramces

    Merci !!!
    Simple erreur de frappe… Mais c’est corrigé…
    Bien vu en tout cas ! 😉

  3. Avatar de szdavid

    Je te souhaite pas que cela t’arrive mais si il y a un problème léectrique, ton disque dur interne risque d’y rester également ; je ne peux que te conseiller d’utiliser également un disque dur externe 🙂

  4. Avatar de Dramces
    Dramces

    Pour Szdavid :
    Je le fais aussi sur disque externe, mais je transfert les archives manuellement.
    Le risque n’est pas nul, mais le cas electrique est bien plus rare que le disque externe mort ou la gravure corrompue.
    Mais tu as bien raison sur le fait que deux supports en vallent mieux qu’un !

    (cet article a été rédigé suite à la perte d’un disque dur interne justement, donc je ne peux que te suivre sur ce point de vue…)

  5. Avatar de jrmi

    Il me semble que pour régler ton probleme d’être obligé de rallumer ton pc le jour J il existe justement un outils dérivé de cron qui s’appelle anacron. Je site la man-page (http://www.delafond.org/traducma... : Anacron peut être utilisé pour exécuter des commandes périodiquement, avec une périodicité donnée en jours. À la différence de cron, il ne suppose pas que la machine tourne en permanence.
    Je te laisse découvrir la chose…

  6. Avatar de Anakin Starkiller
    Anakin Starkiller

    S’il y a une infinité de solutions….euh solution prend un "S" à la fin ! 😀

    @++

  7. Avatar de Franky
    Franky

    Deux petites remarques :

    1/ Pour moi archivage et sauvegarde ne sont pas la même chose. On "archive" d’anciennes données pour économiser de l’espace disque et on "sauvegarde" ses données en cas de problème. Je suppose que tu parles de sauvegarde …

    2/ N’est il pas dommage d’utiliser tar aujourd’hui ? Pas de catalogue, ne fait pas de differenciel (quid des fichiers éffacés depuis le dernier backup ?), ne gère pas la taille max des fichiers, compresse sans distinction les fichiers déjà compressés etc …
    C’est pourquoi je lui prefère dar (dar.linux.free.fr/).

    Amicalement.

  8. Avatar de Tao
    Tao

    Si ça peut t’inspirer, moi j’utilise rsync pour avoir une sauvegarde incrémentalle. Voici mon script :
    #!/bin/sh
    rsync -ab –max-size=200m –del –delete-excluded –exclude-from=/home/brice/bin/exclude_home.txt –backup-dir=../`date +%Y-%m-%d` /home/brice/ /mnt/films/backup/home/last/
    cd /mnt/films/backup/home
    rm -r `date +%Y-%m-%d`/.mozilla-thunderbird
    tar jcf `date +%Y-%m-%d`.tar.bz2 `date +%Y-%m-%d`
    rm -r `date +%Y-%m-%d`

    La charge de travail du pc en est pas mal soulager par rapport à une sauvegarde complète, et en plus ça me permet de remonter dans le temps. Les versions plus anciennes des fichiers sont compressées en .tar.bz2 alors que la version actuelle ne l’est pas pour plus de performances. Dans le fichiers exclude_home.txt on place tous les répertoires qu’on ne veut pas sauvegarder. J’ai placé le tout dans un cron quotidien. Ma sauvegarde est sur un disque dur physiquement différent de celui de home.

  9. Avatar de Dramces
    Dramces

    Pour Franky:
    1 – Effectivement, je parle bien de sauvegarde en cas de crash. Mais il s’agit bien d’un archivage de données. En fait, tar est bien prévu pour de l’archivage alors que je l’utilise dans un esprit de sauvegarde… Le tout se mord la queue !
    2 – Dar pourrait me plaire, c’est certain ! Pas eu le temps de faire des recherches. J’apporte ici une solution simple, mais pas parfaite. Je vais creuser un peu le sujet de dar et si tu veux m’aider, aucun problème !

    Pour Tao:
    Je ne suis pas très à l’aise avec les sauvegardes incrémentielles. Je crain toujours un "loupé" !
    Quant à rsync, c’est un peu pareil… Qu’en est-il d’une restauration ? Souplesse, sécurité, fiabilité…?

  10. Avatar de Franky
    Franky

    Content d’avoir aidé un peu …

    Depuis peu j’utilise backup-manager (version dev) qui gère le format dar simplement. Je livre ci après mon ancien script pour ceux qui préfère le home-made.
    Il crée l’archive principale si elle n’existe pas et fait du differenciel tous les jours sur une semaine (j’ai bien dit differenciel pas incremental).

    #!/bin/bash
    DIFF="-c gux-all-diff-$(date +%a) -A gux-all"
    FULL="-c gux-all"
    if [ -e /save/dar/gux-all.1.dar ]
    then
    MODE=$DIFF
    else
    MODE=$FULL
    fi
    /usr/bin/dar -v –bzip2 -D -R / \
    $MODE \
    -w \
    -s 700M \
    -P proc \
    -P sys \
    -P dev/pts \
    -P initrd \
    -P mnt \
    -P tmp \
    -P save \
    -P src \
    -P var/www \
    -P usr/src \
    -P var/log/apache/* \
    -P "*.iso" \
    -P "*.dar" \
    -P "tinyproxy.log" \
    -Z "*.gz" \
    -Z "*.GZ" \
    -Z "*.tgz" \
    -Z "*.TGZ" \
    -Z "*.bz2" \
    -Z "*.BZ2" \
    -Z "*.zip" \
    -Z "*.ZIP" \
    -Z "*.jar" \
    -Z "*.JAR" \
    -Z "*.rpm" \
    -Z "*.RPM" \
    -Z "*.cz" \
    -Z "*.CZ" \
    -Z "*.gif" \
    -Z "*.GIF" \
    -Z "*.jpg" \
    -Z "*.JPG" \
    -Z "*.mp*" \
    -Z "*.MP*" \
    -Z "*.avi" \
    -Z "*.AVI" \
    -Z "*.mov" \
    -Z "*.MOV"

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *