From 6dc566098abcf32b3bdac4ea820561f7668c7305 Mon Sep 17 00:00:00 2001 From: Elijah Saxon Date: Sat, 8 Jan 2005 00:05:28 +0000 Subject: --- handlers/maildir | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 handlers/maildir (limited to 'handlers/maildir') diff --git a/handlers/maildir b/handlers/maildir new file mode 100644 index 0000000..c07cd7e --- /dev/null +++ b/handlers/maildir @@ -0,0 +1,127 @@ +#!/usr/bin/php4 -q +&1` + if [ "$result" != "1" ]; then + fatal "Can't connect to $desthost as $destuser." + fi +fi + +################################################################## +### FUNCTIONS + +function do_letters() { + 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 + do_maildirs "$srcdir/$i" + done +} + +function do_maildirs() { + local dir=$1 + [ -d $dir ] || fatal "directory $dir not found." + for userdir in `ls -1 $dir`; do + do_userdir $userdir + done +} + +function do_user() { + local user=$1 + local letter=${user:0:1} + local dir="$srcdir/$letter/$user" + [ -d $dir ] || fatal "maildir $dir not found". + + while 1; do + load=`uptime | sed 's/^.*load average: \\([^,]*\\).*$/\\1/'` + if [ $load -lt $loadlimit ]; then + info "load $load, sleeping..." + sleep 600 + else + break + fi + done + + cmd="rsync $maildirrsyncflags $excludes '$dir' '$destuser@$desthost:$destdir/maildir/$letter'" + debug $cmd + # ret=`rsync $maildirrsyncflags $excludes '$dir' '$destuser@$desthost:$destdir/maildir/$letter' 2>&1` +} + +# remove any maildirs from backup which might have been deleted +# and add new ones which have just been created. + +function do_remove() { + local tmp1=/tmp/maildirtmpfile$$ + local tmp2=/tmp/maildirtmpfile$$ + + 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 + ssh -p $destport $desthost 'ls -1 '$destdir/maildir/$i' | sort > $tmp2 + for deluser in `join -v 2 $tmp1 $tmp2`; do + cmd="ssh -p $destport $desthost rm -vr '$destdir/maildir/$i/$deluser/'" + debug $cmd + done + done + rm $tmp1 + rm $tmp2 +} + +### +################################################################## + +### ROTATE BACKUPS ### + +if [ "$remove" == "yes" ]; then + +fi + +### REMOVE OLD MAILDIRS ### + +if [ "$rotate" == "yes" ]; then + +fi + +### ROTATE BACKUPS ### + +if [ "$letter" != "" ]; then + +fi + +if [ "$user" != "" ]; then + +fi -- cgit v1.2.3