X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=handlers%2Fmaildir;h=522bf315028d6c23ba3bf3d424dd42bf66d886ab;hb=27e64209d726e222148756d35ee3acf5d950bd8e;hp=2ea94ff146e8b1ae316a650aaa46edb5d8212e8a;hpb=e8615f15d39fcd9fcaedb3145316d07ee90ca2e1;p=matthijs%2Fupstream%2Fbackupninja.git diff --git a/handlers/maildir b/handlers/maildir index 2ea94ff..522bf31 100644 --- a/handlers/maildir +++ b/handlers/maildir @@ -122,30 +122,32 @@ function do_remove() { function do_rotate() { backuproot=$destdir - now=`date %s` + + ssh -T -o PasswordAuthentication=no $desthost -l $destuser < 0; i-- )); do if [ -d \$dir.\$i ]; then if [ -f \$dir.\$i/rotated ]; then @@ -154,38 +156,41 @@ function do_rotate() { rotated=0 fi cutoff_time=\$(( now - (seconds*i) )) - if [ \$rotated -gt \$cutoff_time ]; then + if [ \$rotated -lt \$cutoff_time ]; then next=\$(( i + 1 )) - echo "mv \$dir.\$i \$dir.\$next" - mv \$dir.\$i \$dir.\$next - date +%c%n%s > \$dir.\$next/rotated + if [ ! -d \$dir.\$next ]; then + echo "mv \$dir.\$i \$dir.\$next" + mv \$dir.\$i \$dir.\$next + date +%c%n%s > \$dir.\$next/rotated + else + echo "Info: skipping rotation of \$dir.\$i because \$dir.\$next already exists." + fi else - echo "Info: skipping rotation of \$dir.\$i because it was already rotated within the last " \$((cutoff_time/86400)) " days." - fi + echo "Info: skipping rotation of \$dir.\$i because it was rotated" \$(( (now-rotated)/86400)) "days ago ("\$(( (now-cutoff_time)/86400))" needed)." + fi fi done done max=\$((keepdaily+1)) - if [ ( \$keepweekly -a -d $backuproot/daily.\$max ) -a ! -d $backuproot/weekly.1 ]; then + if [ \( \$keepweekly -gt 0 -a -d $backuproot/daily.\$max \) -a ! -d $backuproot/weekly.1 ]; then echo mv $backuproot/daily.\$max $backuproot/weekly.1 mv $backuproot/daily.\$max $backuproot/weekly.1 date +%c%n%s > $backuproot/weekly.1/rotated fi max=\$((keepweekly+1)) - if [ ( \$keepmonthly -a -d $backuproot/weekly.\$max ) -a ! -d $backuproot/monthly.1 ]; then + if [ \( \$keepmonthly -gt 0 -a -d $backuproot/weekly.\$max \) -a ! -d $backuproot/monthly.1 ]; then echo mv $backuproot/weekly.\$max $backuproot/monthly.1 mv $backuproot/weekly.\$max $backuproot/monthly.1 date +%c%n%s > $backuproot/monthly.1/rotated fi for rottype in daily weekly monthly; do - max=\`echo keep\${rottype}\` - max=\$((max+1)) + max=\$((keep\${rottype}+1)) dir="$backuproot/\$rottype" - oldest=\`ls -d $\dir.* | sed 's/^.*\.//' | sort -n | tail -1\` - + oldest=\`ls -d \$dir.* | sed 's/^.*\.//' | sort -n | tail -1\` + [ "\$oldest" == "" ] && oldest=0 # if we've rotated the last backup off the stack, remove it. for (( i=\$oldest; i >= \$max; i-- )); do if [ -d \$dir.\$i ]; then @@ -194,6 +199,7 @@ function do_rotate() { fi done done +####### END REMOTE SCRIPT ####### EOF }