diff options
-rwxr-xr-x | backupninja | 26 | ||||
-rw-r--r-- | changelog | 2 | ||||
-rw-r--r-- | handlers/maildir | 16 |
3 files changed, 33 insertions, 11 deletions
diff --git a/backupninja b/backupninja index ea7304e..d653144 100755 --- a/backupninja +++ b/backupninja @@ -131,6 +131,23 @@ function setsection() { CURRENT_SECTION=$1 } + +# +# create a temporary file in a secure way. +# +function maketemp() { + if [ -x /bin/mktemp ] + then + local tempfile=`mktemp /tmp/$1.XXXXXXXX` + else + DATE=`date` + sectmp=`echo $DATE | /usr/bin/md5sum | cut -d- -f1` + local tempfile=/tmp/$1.$sectmp + fi + echo $tempfile +} + + # # sets a global var with name equal to $1 # to the value of the configuration parameter $1 @@ -305,14 +322,7 @@ function process_action() { let "actions_run += 1" # call the handler: - if [ -x /bin/mktemp ] - then - local bufferfile=`mktemp /tmp/backupninja.buffer.XXXXXXXX` - else - DATE=`date` - sectmp=`echo $DATE | /usr/bin/md5sum | cut -d- -f1` - local bufferfile=/tmp/backupninja.buffer.$sectmp - fi + local bufferfile=`maketemp backupninja.buffer` echo "" > $bufferfile echo_debug_msg=1 ( @@ -1,6 +1,8 @@ +version 0.9 -- unreleased removed erroneous magic file marker in pgsql handler fixed insecure temporary file creation fixed incorrect find positional + version 0.8 -- September 15 2005 added pgsql (PostgreSQL) handler, with vservers support. added vservers support to duplicity handler diff --git a/handlers/maildir b/handlers/maildir index 0af8ff7..5219bef 100644 --- a/handlers/maildir +++ b/handlers/maildir @@ -12,7 +12,17 @@ # weekly.2 # monthly.1 # if keepdaily is 3, keepweekly is 2, and keepmonthly is 1. -# +# +# The basic algorithm is to rsync each maildir individually, +# and to use hard links for retaining historical data. +# +# We rsync each maildir individually because it becomes very +# unweldy to start a single rsync of many hundreds of thousands +# of files. +# +# For the backup rotation to work, destuser must be able to run +# arbitrary bash commands on the desthost. +# ############################################################## getconf rotate yes @@ -101,8 +111,8 @@ $dir $destuser@$desthost:$destdir/$letter \ # and add new ones which have just been created. function do_remove() { - local tmp1=/tmp/maildirtmpfile$$ - local tmp2=/tmp/maildirtmpfile$$ + local tmp1=`maketemp maildir-tmp-file` + local tmp2=`maketemp maildir-tmp-file` for i in a b c d e f g h i j k l m n o p q r s t u v w x y z; do ls -1 "$srcdir/$i" | sort > $tmp1 |