X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=backupninja;h=687571bf88e092bcda470163a0ef9875e00883e9;hb=26a57c396c75e0e782ffaf3946f6912da0ecf4ae;hp=ce85ba46d10ca25d3a95e2aca50ab467f8512d95;hpb=c8ad6fc41533def8ecca1fcf5c9a6bff3e382fa0;p=matthijs%2Fupstream%2Fbackupninja.git diff --git a/backupninja b/backupninja index ce85ba4..687571b 100755 --- a/backupninja +++ b/backupninja @@ -143,7 +143,6 @@ function getconf() { # replace * with %, so that it is not globbed. ret="${ret//\\*/__star__}" - ret="${ret//\*/__star__}" # this is weird, but single quotes are needed to # allow for returned values with spaces. $ret is still expanded @@ -160,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 } @@ -200,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 @@ -268,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 @@ -318,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" @@ -348,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 @@ -360,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 @@ -367,6 +374,7 @@ while [ $# -ge 1 ]; do ;; *) debug=1 + echo "Unknown option $1" fatal "Unknown option $1" usage exit @@ -382,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) @@ -399,6 +419,7 @@ 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 @@ -406,7 +427,12 @@ getconf MYSQLDUMP /usr/bin/mysqldump getconf GZIP /bin/gzip getconf RSYNC /usr/bin/rsync -[ -d "$configdirectory" ] || fatal "Configuration directory '$configdirectory' not found." +if [ ! -d "$configdirectory" ]; then + echo "Configuration directory '$configdirectory' not found." + fatal "Configuration directory '$configdirectory' not found." +fi + +[ -f "$logfile" ] || touch $logfile if [ "$UID" != "0" ]; then echo "$0 can only be run as root" @@ -428,7 +454,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