projects
/
matthijs
/
upstream
/
backupninja.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e8615f1
)
update
author
Elijah Saxon
<elijah@riseup.net>
Thu, 13 Jan 2005 03:22:34 +0000
(
03:22
+0000)
committer
Elijah Saxon
<elijah@riseup.net>
Thu, 13 Jan 2005 03:22:34 +0000
(
03:22
+0000)
handlers/maildir
patch
|
blob
|
history
diff --git
a/handlers/maildir
b/handlers/maildir
index 2ea94ff146e8b1ae316a650aaa46edb5d8212e8a..522bf315028d6c23ba3bf3d424dd42bf66d886ab 100644
(file)
--- a/
handlers/maildir
+++ b/
handlers/maildir
@@
-122,30
+122,32
@@
function do_remove() {
function do_rotate() {
backuproot=$destdir
function do_rotate() {
backuproot=$destdir
- now=`date %s`
+
+ ssh -T -o PasswordAuthentication=no $desthost -l $destuser <<EOF
+##### BEGIN REMOTE SCRIPT #####
seconds_daily=86400
seconds_weekly=604800
seconds_monthly=2628000
seconds_daily=86400
seconds_weekly=604800
seconds_monthly=2628000
-
- ssh -o PasswordAuthentication=no $desthost -l $destuser <<EOF
keepdaily=$keepdaily
keepweekly=$keepweekly
keepmonthly=$keepmonthly
keepdaily=$keepdaily
keepweekly=$keepweekly
keepmonthly=$keepmonthly
+ now=\`date +%s\`
for rottype in daily weekly monthly; do
for rottype in daily weekly monthly; do
- seconds=\
`echo seconds_\${rottype}\`
+ seconds=\
$((seconds_\${rottype}))
dir="$backuproot/\$rottype"
if [ ! -d \$dir.1 ]; then
dir="$backuproot/\$rottype"
if [ ! -d \$dir.1 ]; then
- echo "
Warning
: \$dir.1 does not exist. This backup is missing, so we are skipping the rotation."
- continue
+ echo "
Info
: \$dir.1 does not exist. This backup is missing, so we are skipping the rotation."
+ continue
1
elif [ ! -f \$dir.1/created ]; then
elif [ ! -f \$dir.1/created ]; then
- echo "Warning: \$dir.1/created does not exist. This backup may be only partially completed
, so we are skipping the
rotation."
- continue
+ echo "Warning: \$dir.1/created does not exist. This backup may be only partially completed
. Skipping
rotation."
+ continue
1
fi
# Rotate the current list of backups, if we can.
fi
# Rotate the current list of backups, if we can.
- oldest=\`ls -d $\dir.* | sed 's/^.*\.//' | sort -n | tail -1\`
+ oldest=\`ls -d \$dir.* | sed 's/^.*\.//' | sort -n | tail -1\`
+ [ "\$oldest" == "" ] && oldest=0
for (( i=\$oldest; i > 0; i-- )); do
if [ -d \$dir.\$i ]; then
if [ -f \$dir.\$i/rotated ]; then
for (( i=\$oldest; i > 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) ))
rotated=0
fi
cutoff_time=\$(( now - (seconds*i) ))
- if [ \$rotated -
g
t \$cutoff_time ]; then
+ if [ \$rotated -
l
t \$cutoff_time ]; then
next=\$(( i + 1 ))
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
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))
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))
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
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"
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
# 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
fi
done
done
+####### END REMOTE SCRIPT #######
EOF
}
EOF
}