• [^] # Re: cron

    Posté par . En réponse au message Backup instinct. Évalué à 1.

    Voila. C'est loin d'être parfait, mais ça me suffit. C'est prévu pour faire des sauvegarde du répertoire personnel. Il y a une sauvegarde partielle chaque jour de la semaine et une totale une fois par semaine. Ce script marche mal (certains fichiers peuvent ne pas être sauvegardés) si la sauvegarde hebdomadaire n'est pas faite.
    Les sauvegardes de moins d'une semaine sont copiées avec rsync sur une machine distante (il faut configurer ssh pour qu'il ne réclame pas de mot de passe).
    Périodiquement, il faut enlever les anciennes sauvegardes locales complètes à la main. Si j'oublie de le faire, je reçois un mail qui contient un message d'erreur du type "no space left on device". Dans mon cas, les sauvegardes locales sont sur une partition séparées qui est montée uniquement au moment de la sauvegarde.


    #!/bin/bash

    # Ce script DOIT être édité pour refléter votre configuration.
    # Vous devez modifier les variables ci-dessous ainsi que les "exclude" dans la
    # commande tar pour enlever tout ce qui ne mérite pas une sauvegarde (cache de
    # mozilla, ...)

    # Répertoire local où sont stockées les sauvegardes
    dir="/backup"
    # Répertoire distant = remotemachine:remotedir/
    remotemachine="remote"
    remotedir="backup/"
    # Jour de la semaine où une sauvegarde complète est effectuée.
    # 0=dimanche, 1=lundi, ...
    day="0"
    # Répertoire personnel à sauvegarder. Il est obtenu à partir de $HOME.
    # D'autres répertoires peuvent être ajoutés à la fin de la commande tar. La
    # boite au lettre entrante est sauvegardée en utilisant $LOGNAME
    home=`echo $HOME"/" | sed 's#^/##'`

    mount /backup

    if [ `date +%w` = $day ]; then
    archivename=$dir"/old/`date +%Y%m%d`.tgz"
    param=""
    remotename="lastweek.tgz"
    else
    archivename=$dir"/`date +%A`.tgz"
    # lastbackup: sauvegarde la plus récente
    lastbackup=`ls -1 --sort=time -r $dir/*.tgz | tail -1`
    param=" --newer-mtime $lastbackup"
    remotename="`date +%A`.tgz"
    fi
    tar --create --atime-preserve\
    --directory='/'\
    $param\
    --exclude=$home'.mozilla*Cache*'\
    --exclude=$home'.amaya*'\
    --exclude=$home'.w3m*'\
    --exclude=$home'.kde*'\
    --exclude=$home'.enlightenment*'\
    --exclude=$home'.gnome*'\
    --exclude=$home'.gimp*'\
    --exclude=$home'.Abisuite*'\
    $home "var/mail/"$LOGNAME \
    | gzip --rsyncable > $archivename

    if [ `date +%w` = $day ]; then
    ln -sf $archivename $dir"/lastweek.tgz"
    fi

    ping -c 5 -q $remotemachine &> /dev/null && \
    rsync --times --copy-links -e ssh $dir/*.tgz $remotemachine:$remotedir

    umount /backup