#! /bin/bash source functions.sh pidfile=/var/run/backup_script mylog 0 "backup starts" trap cleanup EXIT function cleanup { echo "bye bye" test -f $pidfile && rm -f $pidfile mylog 0 "backup done" } if [ -f $pidfile ] ; then pid=$(cat $pidfile) if [ -d /proc/$pid ] ; then myerror 42 "$pid already running" else rm -f $pidfile fi fi echo $$ > $pidfile function listBackups { ls -lrt $1 exit 0 } function usage { echo "$0 [-l] dir1 dir2" echo "make or list backups" exit 0 } if [ $UID -ne 0 ] ; then echo "need root" exit 1 fi backupdir=/var/backups/$(date -I) while getopts hl OPTION ; do case $OPTION in (l) listBackups ${backupdir}/.. ; ;; (h) usage ; ;; (*) usage ; ;; esac done shift $(( OPTIND - 1)) mkdir -p $backupdir || myerror 2 "impossible de créer $backupdir" for dir in "$@" ; do test -d $dir || { echo $dir dont exist ; mylog 2 "$dir dont exists" ; continue ; } echo cp -a $dir $backupdir mylog $? "backup of $dir done" done