Contenu exemple du fichier de configuration

# This config file make relation for backup
 
# Options
BACKUP_OPT="-v -s 4613734400 -D -z9 -m 150"
BACKUP_EXCLUDE_EXT="-Z *.avi -Z *.bz2 -Z *.gif -Z *.gz -Z *.jpg -Z *.mov -Z *.mpg -Z *.pbm -Z *.pdf -Z *.png -Z *.pnm -Z *.Z -Z *.zip"
BACKUP_EXCLUDE_PATH="-P phoenix/.bogofilter -P phoenix/.fonts -P phoenix/.kde/cache-maxiding -P phoenix/.kde/socket-maxiding -P phoenix/.kde/tmp-maxiding -P phoenix/.spamassassin -P phoenix/.thumbnails -P phoenix/.turboprint -P phoenix/.unison -P phoenix/.wesnoth -P phoenix/.widelands -P phoenix/.wine* -P phoenix/usr -P phoenix/virtuel -P .Trash-* -P phoenix/tmp"
 
# Copy Backup
COPYTO="usbdrive network"
 
# Copy to usb drive
usbdrive_type="usb"
usbdrive_dev="/dev/usb/disk1"
usbdrive_mountpoint="/media/disque/"
usbdrive_pathname="backup/"
 
# Copy to network
network_type="net"
network_host="miniding"
network_user="phoenix"
# no network_pass : use ssh key for backup
network_dir="/home/phoenix/backup"
 
# Home
home_name=maxiding_home
home_source=/home/
home_destination=/gravure/dar/home/
home_inc_max=10
 
# Etc
etc_name=maxiding_etc
etc_source=/etc/
etc_destination=/gravure/dar/etc/
etc_inc_max=10

Sauvegarde automatique

#!/bin/sh
 
#############################################################################
##   Copyright (C) 2006 by Ulrich Van Den Hekke                            ##
##   ulrich.vdh@free.fr                                                    ##
##                                                                         ##
##   This program is free software; you can redistribute it and/or modify  ##
##   it under the terms of the GNU General Public License as published by  ##
##   the Free Software Foundation; either version 2 of the License, or     ##
##   (at your option) any later version.                                   ##
##                                                                         ##
# /var 
##   This program is distributed in the hope that it will be useful,       ##
##   but WITHOUT ANY WARRANTY; without even the implied warranty of        ##
##   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         ##
##   GNU General Public License for more details.                          ##
##                                                                         ##
##   You should have received a copy of the GNU General Public License     ##
##   along with this program; if not, write to the                         ##
##   Free Software Foundation, Inc.,                                       ##
##   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             ##
#############################################################################
 
if [ -e /etc/autobackup ] ; then
    . /etc/autobackup
else
  echo "Please configure the autobackup config file"
  exit 1
fi
 
if [ $# -ne 1 ] ; then
  echo "Please specify a project to backup"
  exit 2
fi
 
# Define name of variable to use
var_name="\$$1_name"
var_source="\$$1_source"
var_destination="\$$1_destination"
var_inc_max="\$$1_inc_max"
 
# Define content of variable for the project
BACKUP_SRC=`eval echo $var_source`
BACKUP_DST=`eval echo $var_destination`
BACKUP_NAME=`eval echo $var_name`
BACKUP_INCREMENTAL_MAX=`eval echo $var_inc_max`
 
if [ -z "$BACKUP_NAME" ] ; then
  echo "Project undefined"
  exit 3
fi
 
BACKUP_BIN=dar
DATE_BACKUP=`date +%Y%m%d`
BACKUP_ARCHIVE="${BACKUP_NAME}_${DATE_BACKUP}"
 
# From config file
# COUNT_INCREMENTAL_BACKUP
# LAST_BACKUP
# LAST_COMPLETE_BACKUP
 
# Some options
# -v verbose
# -c archive name
# -R root place
# -s slice size
# -p slice pause
# -D backup empty dir
# -z9 compression gzip level 9
# -m for minimal size
# -Z exclude from compression
# -P exclude file
 
function start_backup() {
    echo "Backup of $BACKUP_SRC in progress ..."
 
    $BACKUP_BIN -c ${BACKUP_DST}|>${BACKUP_ARCHIVE}|> -R $BACKUP_SRC $BACKUP_OPT $BACKUP_EXCLUDE_EXT $BACKUP_EXCLUDE_PATH > ${BACKUP_DST}|>${BACKUP_NAME}|>.log
}
 
function load_backup_config() {
    echo -n "Load config file ... "
 
    if [ -e ${BACKUP_DST}|>${BACKUP_NAME}|>.config ] ; then
        . ${BACKUP_DST}|>${BACKUP_NAME}|>.config
        echo "loaded."
    else
        COUNT_INCREMENTAL_BACKUP=$BACKUP_INCREMENTAL_MAX
        echo "not found"
    fi
}
 
function save_backup_config() {
    echo "Save backup config file ..."
 
    echo "COUNT_INCREMENTAL_BACKUP=$COUNT_INCREMENTAL_BACKUP" > ${BACKUP_DST}|>${BACKUP_NAME}|>.config
    echo "LAST_BACKUP=$DATE_BACKUP"                          >> ${BACKUP_DST}|>${BACKUP_NAME}|>.config
    echo "LAST_COMPLETE_BACKUP=$LAST_COMPLETE_BACKUP"        >> ${BACKUP_DST}|>${BACKUP_NAME}|>.config
}
 
function define_incremental() {
    echo "There is $COUNT_INCREMENTAL_BACKUP on $BACKUP_INCREMENTAL_MAX"
    if [ $COUNT_INCREMENTAL_BACKUP -lt $BACKUP_INCREMENTAL_MAX  ] ; then
        echo "Backup is incremental from $LAST_COMPLETE_BACKUP"
        COUNT_INCREMENTAL_BACKUP=`expr $COUNT_INCREMENTAL_BACKUP + 1`
        BACKUP_OPT="-A ${BACKUP_DST}${BACKUP_NAME}_${LAST_COMPLETE_BACKUP} ${BACKUP_OPT}"
    else
        echo "Backup is complete"
        COUNT_INCREMENTAL_BACKUP=1
        LAST_COMPLETE_BACKUP=$DATE_BACKUP
    fi
}
 
load_backup_config;
define_incremental;
start_backup;
save_backup_config;

Copie automatique

#!/bin/sh
 
#############################################################################
##   Copyright (C) 2006 by Ulrich Van Den Hekke                            ##
##   ulrich.vdh@free.fr                                                    ##
##                                                                         ##
##   This program is free software; you can redistribute it and/or modify  ##
##   it under the terms of the GNU General Public License as published by  ##
##   the Free Software Foundation; either version 2 of the License, or     ##
##   (at your option) any later version.                                   ##
##                                                                         ##
##   This program is distributed in the hope that it will be useful,       ##
##   but WITHOUT ANY WARRANTY; without even the implied warranty of        ##
##   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         ##
##   GNU General Public License for more details.                          ##
##                                                                         ##
##   You should have received a copy of the GNU General Public License     ##
##   along with this program; if not, write to the                         ##
##   Free Software Foundation, Inc.,                                       ##
##   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             ##
#############################################################################
 
if [ -e /etc/autobackup ] ; then
    . /etc/autobackup
else
  echo "Please configure the autobackup config file"
  exit 1
fi
 
if [ $# -ne 1 ] ; then
  echo "Please specify a project to backup"
  exit 2
fi
 
# Define name of variable to use
var_name="\$$1_name"
var_source="\$$1_source"
var_destination="\$$1_destination"
var_inc_max="\$$1_inc_max"
 
# Define content of variable for the project
BACKUP_SRC=`eval echo $var_source`
BACKUP_DST=`eval echo $var_destination`
BACKUP_NAME=`eval echo $var_name`
BACKUP_INCREMENTAL_MAX=`eval echo $var_inc_max`
 
if [ -z "$BACKUP_NAME" ] ; then
  echo "Project undefined"
  exit 3
fi
 
# From config file
# COUNT_INCREMENTAL_BACKUP
# LAST_BACKUP
# LAST_COMPLETE_BACKUP
 
 
function load_backup_config() {
    echo -n "Load config file ... "
 
    if [ -e ${BACKUP_DST}|>${BACKUP_NAME}|>.config ] ; then
        . ${BACKUP_DST}|>${BACKUP_NAME}|>.config
 
        BACKUP_ARCHIVE="${BACKUP_NAME}_${LAST_BACKUP}"
        echo "loaded."
    else
        echo "not found"
        exit 4
    fi
}
 
function save_by_network() {
    echo -n "Save on computer $HOST as $USER on $DIR"
 
    ping -c 3 -W 10 $HOST > /dev/null
 
    if [ $? -ne 0 ] ; then 
        echo "failed"
    else
        DESTINATION="${HOST}:${DIR}"
        if [ -n $USER ] ; then
            DESTINATION="${USER}@${DESTINATION}"
        fi
        scp ${BACKUP_DST}|>${BACKUP_ARCHIVE}|>* $DESTINATION
 
        if [ $? -ne 0 ] ; then 
            echo "failed"
        else
            echo "ok"
        fi
    fi
}
 
function save_by_usb() {
    echo -n "Save on drive $DEV "
 
    if [ -e $DEV ] ; then
        TOUMOUNT=1
        LINECOUNT=`mount | grep $DEV | cut -f 1 -d\  | wc -l `
        if [ $LINECOUNT -gt 0 ] ; then
            MOUNTPOINT=`mount | grep $DEV | cut -f 3 -d\ `
            TOUMOUNT=0
        else
            mount $MOUNTPOINT
 
            if [ $? -ne 0 ] ; then
                echo "mount failed "
            fi
        fi
        if [ -d ${MOUNTPOINT}|>${PATHNAME}|> ] ; then
            for FILE in `ls -1 ${BACKUP_DST}|>${BACKUP_ARCHIVE}|>*` ; do
                FILENAME=`basename $FILE` 
                if [ -e ${MOUNTPOINT}|>${PATHNAME}|>${FILENAME}|> ] ; then
                    echo "exist "
                else
                    cp ${FILE}|> ${MOUNTPOINT}|>${PATHNAME}|>
                fi
            done
 
            echo "ok"
        else
            echo "failed"
        fi
        if [ $TOUMOUNT -eq 1 ] ; then
            umount $MOUNTPOINT
        fi
 
    else
        echo "device not found"
    fi
}
 
function copy_to() {
    echo "Start make copy of backup $BACKUP_NAME"
 
    for NAME in $COPYTO ; do
        var_type="\$${NAME}_type"
        TYPE=`eval echo $var_type`
 
        echo "--> $NAME as $TYPE"
        case $TYPE in
            "usb")
                var_dev="\$${NAME}_dev"
                DEV=`eval echo $var_dev`
 
                var_mountpoint="\$${NAME}_mountpoint"
                MOUNTPOINT=`eval echo $var_mountpoint`
 
                var_pathname="\$${NAME}_pathname"
                PATHNAME=`eval echo $var_pathname`
 
                save_by_usb;
            ;;
 
            "net")
                var_host="\$${NAME}_host"
                HOST=`eval echo $var_host`
 
                var_user="\$${NAME}_user"
                USER=`eval echo $var_user`
 
                var_dir="\$${NAME}_dir"
                DIR=`eval echo $var_dir`
 
                save_by_network;
            ;;
        esac
    done
}
 
copy_to;