X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=backupninja;h=a105a5bf3eef7cc06b2d0d141828d03d1bcf73fa;hb=1e410a6d9574c56b7d3a3633b82220eacf782d06;hp=3cd3cae1a1e487d6de202ebd08bc15088c0cb05c;hpb=907f7d4455c722670e2f787b6f3f77877891862b;p=matthijs%2Fupstream%2Fbackupninja.git diff --git a/backupninja b/backupninja index 3cd3cae..a105a5b 100755 --- a/backupninja +++ b/backupninja @@ -159,9 +159,11 @@ function check_perms() { local perms=`ls -ld $file` perms=${perms:4:6} if [ "$perms" != "------" ]; then + echo "Configuration files must not be group or world readable! Dying on file $file" fatal "Configuration files must not be group or world readable! Dying on file $file" fi if [ `ls -ld $file | awk '{print $3}'` != "root" ]; then + echo "Configuration files must be owned by root! Dying on file $file" fatal "Configuration files must be owned by root! Dying on file $file" fi } @@ -199,9 +201,9 @@ function isnow() { whendayofweek=$1; at=$2; whentime=$3; whenday=`toint "$whendayofweek"` whendayofweek=`tolower "$whendayofweek"` - whentime=`echo "$whentime" | sed 's/:[0-9][0-9]$//'` + whentime=`echo "$whentime" | sed 's/:[0-9][0-9]$//' | sed -r 's/^([0-9])$/0\1/'` - if [ "$whendayofweek" == "everyday" ]; then + if [ "$whendayofweek" == "everyday" -o "$whendayofweek" == "daily" ]; then whendayofweek=$nowdayofweek fi @@ -267,6 +269,8 @@ function process_action() { getconf when "$defaultwhen" if [ "$processnow" == 1 ]; then info "running $file because of --now" + elif [ "$when" == "hourly" ]; then + debug "running $file because 'when = hourly'" else IFS=$'\t\n' for w in $when; do @@ -317,10 +321,12 @@ function process_action() { elif [ $_warnings != 0 ]; then msg "*warning* -- $file" errormsg="$errormsg\n== warnings from $file ==\n\n$ret\n" - elif [ $retcode == 0 ]; then - msg "success -- $file" else - msg "unknown -- $file" + msg "success -- $file" +# elif [ $retcode == 0 ]; then +# msg "success -- $file" +# else +# msg "unknown -- $file" fi let "fatals += _fatals" @@ -347,6 +353,7 @@ while [ $# -ge 1 ]; do if [ -f $2 ]; then conffile=$2 else + echo "-f|--conffile option must be followed by an existing filename" fatal "-f|--conffile option must be followed by an existing filename" usage fi @@ -359,6 +366,7 @@ while [ $# -ge 1 ]; do singlerun=$2 processnow=1 else + echo "--run option must be fallowed by a backupninja action file" fatal "--run option must be fallowed by a backupninja action file" usage fi @@ -366,6 +374,7 @@ while [ $# -ge 1 ]; do ;; *) debug=1 + echo "Unknown option $1" fatal "Unknown option $1" usage exit @@ -381,10 +390,22 @@ done ## Load and confirm basic configuration values # bootstrap -[ -r "$conffile" ] || fatal "Configuration file $conffile not found." +if [ ! -r "$conffile" ]; then + echo "Configuration file $conffile not found." + fatal "Configuration file $conffile not found." +fi + scriptdir=`grep scriptdirectory $conffile | awk '{print $3}'` -[ -n "$scriptdir" ] || fatal "Cound not find entry 'scriptdirectory' in $conffile" -[ -d "$scriptdir" ] || fatal "Script directory $scriptdir not found." +if [ ! -n "$scriptdir" ]; then + echo "Cound not find entry 'scriptdirectory' in $conffile" + fatal "Cound not find entry 'scriptdirectory' in $conffile" +fi + +if [ ! -d "$scriptdir" ]; then + echo "Script directory $scriptdir not found." + fatal "Script directory $scriptdir not found." +fi + setfile $conffile # get global config options (second param is the default) @@ -398,20 +419,35 @@ defaultwhen=$when getconf logfile /var/log/backupninja.log getconf usecolors "yes" getconf SLAPCAT /usr/sbin/slapcat +getconf LDAPSEARCH /usr/bin/ldapsearch getconf RDIFFBACKUP /usr/bin/rdiff-backup getconf MYSQL /usr/bin/mysql getconf MYSQLHOTCOPY /usr/bin/mysqlhotcopy getconf MYSQLDUMP /usr/bin/mysqldump getconf GZIP /bin/gzip getconf RSYNC /usr/bin/rsync +getconf vservers no +getconf VSERVERINFO /usr/sbin/vserver-info +getconf VSERVER /usr/sbin/vserver +getconf VROOTDIR `$VSERVERINFO info SYSINFO |grep vserver-Rootdir | awk '{print $2}'` + +if [ ! -d "$configdirectory" ]; then + echo "Configuration directory '$configdirectory' not found." + fatal "Configuration directory '$configdirectory' not found." +fi -[ -d "$configdirectory" ] || fatal "Configuration directory '$configdirectory' not found." +[ -f "$logfile" ] || touch $logfile if [ "$UID" != "0" ]; then echo "$0 can only be run as root" exit 1 fi +if [ "$VSERVERS" = "yes" -a ! -d $VROOTDIR ]; then + echo "vservers option set in config, but $VROOTDIR is not a directory!" + fatal "vservers option set in config, but $VROOTDIR is not a directory!" +fi + ## Process each configuration file # by default, don't make files which are world or group readable. @@ -427,7 +463,7 @@ errormsg="" if [ "$singlerun" ]; then files=$singlerun else - files=`find $configdirectory -mindepth 1 ` + files=`find $configdirectory -mindepth 1 | sort -n` fi for file in $files; do