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
[^] # Re: cron
Posté par didit . En réponse au message Backup instinct. Évalué à 1.
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