From eff27ce1cd0cd4f25d23c7d51bfd5283b30882db Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Mon, 20 Sep 2010 22:10:13 -0300 Subject: Fixing long rotation at rsync handler --- handlers/rsync.in | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/handlers/rsync.in b/handlers/rsync.in index fea7e7b..537fd4c 100644 --- a/handlers/rsync.in +++ b/handlers/rsync.in @@ -384,14 +384,14 @@ function rotate_long { for rottype in daily weekly monthly; do seconds=$((seconds_${rottype})) - dir="$backuproot/$rottype" - metadata="$backuproot/metadata/$rottype.1" - mkdir -p $metadata + metadata="$backuproot/metadata/$rottype" + + mkdir -p $metadata.1 if [ ! -d $dir.1 ]; then echo "Debug: $dir.1 does not exist, skipping." continue 1 - elif [ ! -f $metadata/created ] && [ ! -f $metadata/rotated ]; then + elif [ ! -f $metadata.1/created ] && [ ! -f $metadata.1/rotated ]; then echo "Warning: metadata does not exist for $dir.1. This backup may be only partially completed. Skipping rotation." continue 1 fi @@ -401,10 +401,10 @@ function rotate_long { [ "$oldest" == "" ] && oldest=0 for (( i=$oldest; i > 0; i-- )); do if [ -d $dir.$i ]; then - if [ -f $metadata/created ]; then - created=`tail -1 $metadata/created` - elif [ -f $metadata/rotated ]; then - created=`tail -1 $metadata/rotated` + if [ -f $metadata.$i/created ]; then + created=`tail -1 $metadata.$i/created` + elif [ -f $metadata.$i/rotated ]; then + created=`tail -1 $metadata.$i/rotated` else created=0 fi @@ -414,8 +414,9 @@ function rotate_long { if [ ! -d $dir.$next ]; then echo "Debug: $rottype.$i --> $rottype.$next" $nice mv $dir.$i $dir.$next - mkdir -p $backuproot/metadata/$rottype.$next - date +%c%n%s > $backuproot/metadata/$rottype.$next/rotated + mkdir -p $metadata.$next + date +%c%n%s > $metadata.$next/rotated + rm -f $metadata.$next/created else echo "Debug: skipping rotation of $dir.$i because $dir.$next already exists." fi @@ -485,14 +486,14 @@ function rotate_long_remote { for rottype in daily weekly monthly; do seconds=\$((seconds_\${rottype})) - dir="$backuproot/\$rottype" - metadata="$backuproot/metadata/\$rottype.1" - mkdir -p \$metadata + metadata="$backuproot/metadata/\$rottype" + + mkdir -p \$metadata.1 if [ ! -d \$dir.1 ]; then echo "Debug: \$dir.1 does not exist, skipping." continue 1 - elif [ ! -f \$metadata/created ] && [ ! -f \$metadata/rotated ]; then + elif [ ! -f \$metadata.1/created ] && [ ! -f \$metadata.1/rotated ]; then echo "Warning: metadata does not exist for \$dir.1. This backup may be only partially completed. Skipping rotation." continue 1 fi @@ -502,10 +503,10 @@ function rotate_long_remote { [ "\$oldest" == "" ] && oldest=0 for (( i=\$oldest; i > 0; i-- )); do if [ -d \$dir.\$i ]; then - if [ -f \$metadata/created ]; then - created=\`tail -1 \$metadata/created\` - elif [ -f \$metadata/rotated ]; then - created=\`tail -1 \$metadata/rotated\` + if [ -f \$metadata.\$i/created ]; then + created=\`tail -1 \$metadata.\$i/created\` + elif [ -f \$metadata.\$i/rotated ]; then + created=\`tail -1 \$metadata.\$i/rotated\` else created=0 fi @@ -515,8 +516,9 @@ function rotate_long_remote { if [ ! -d \$dir.\$next ]; then echo "Debug: \$rottype.\$i --> \$rottype.\$next" $nice mv \$dir.\$i \$dir.\$next - mkdir -p $backuproot/metadata/\$rottype.\$next - date +%c%n%s > $backuproot/metadata/\$rottype.\$next/rotated + mkdir -p \$metadata.\$next + date +%c%n%s > \$metadata.\$next/rotated + rm -f \$metadata.\$next/created else echo "Debug: skipping rotation of \$dir.\$i because \$dir.\$next already exists." fi @@ -528,7 +530,7 @@ function rotate_long_remote { done max=\$((keepdaily+1)) - if [ \$keepweekly -gt 0 -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 "Debug: daily.\$max --> weekly.1" $nice mv $backuproot/daily.\$max $backuproot/weekly.1 mkdir -p $backuproot/metadata/weekly.1 -- cgit v1.2.3 From 2bf727c1407fa7bbf724f0259c4ff064a8444b86 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 25 Sep 2010 16:27:11 -0300 Subject: Don't remove created metadata after rotation at rsync --- handlers/rsync.in | 2 -- 1 file changed, 2 deletions(-) diff --git a/handlers/rsync.in b/handlers/rsync.in index 537fd4c..7b06c24 100644 --- a/handlers/rsync.in +++ b/handlers/rsync.in @@ -416,7 +416,6 @@ function rotate_long { $nice mv $dir.$i $dir.$next mkdir -p $metadata.$next date +%c%n%s > $metadata.$next/rotated - rm -f $metadata.$next/created else echo "Debug: skipping rotation of $dir.$i because $dir.$next already exists." fi @@ -518,7 +517,6 @@ function rotate_long_remote { $nice mv \$dir.\$i \$dir.\$next mkdir -p \$metadata.\$next date +%c%n%s > \$metadata.\$next/rotated - rm -f \$metadata.\$next/created else echo "Debug: skipping rotation of \$dir.\$i because \$dir.\$next already exists." fi -- cgit v1.2.3