hcoop-backup: Back up spamd directory specially.
[clinton/scripts.git] / hcoop-backup
index 6962450..2dd4332 100755 (executable)
@@ -22,7 +22,7 @@ KEYFILE=/etc/backup-encryption-key
 BACKUPDIR=/afs/megacz.com/private/hcoop-backup/
 
 cd $BACKUPDIR
-find * -prune -ctime +1 -exec rm -rf {} \; || true
+find * -prune -ctime +2 -exec rm -rf {} \; || true
 
 SUBDIR=`date +%Y.%m.%d`
 rm -rf $SUBDIR
@@ -46,6 +46,7 @@ diff allfiles debfiles | grep '^<' | cut -b 3- | \
  grep -v ^/var/lib/dpkg | \
  grep -v ^/var/backups | \
  grep -v ^/var/lib/changetrack | \
+ grep -v ^/var/local/lib/spamd | \
  grep -v ^/var/run | \
  grep -v ^/var/lock | \
  grep -v ^/var/lib/ucf | \
@@ -105,6 +106,33 @@ tar clpf - --ignore-failed-read --no-recursion -C / -T backupfiles | \
   ccrypt -k $KEYFILE -e | \
   catsync hcoop.backup.tar$COMPRESS_EXT.aescrypt
 
+
+# Acquire lock before messing with spamd
+COUNT=0
+LOCK=/var/local/lib/spamd/.lock
+while test -f $LOCK; do
+    sleep 2m
+    COUNT=$(expr $COUNT + 1)
+    if test $COUNT -eq 10; then
+        # Enough waiting.  Kill the process.
+        P=$(cat $LOCK) || :
+        test -n "$P" && kill $P || :
+        rm -f $LOCK
+        break
+    fi
+done
+touch $LOCK
+
+tar clpf - --ignore-failed-read -C / /var/local/lib/spamd | \
+  $COMPRESS_PROG | \
+  ccrypt -k $KEYFILE -e | \
+  catsync ../common.spamd.tar$COMPRESS_EXT.aescrypt.new
+rm -f $LOCK
+
+test -s ../common.spamd.tar$COMPRESS_EXT.aescrypt.new && \
+    mv ../common.spamd.tar$COMPRESS_EXT.aescrypt.new \
+       ../common.spamd.tar$COMPRESS_EXT.aescrypt
+
 vos listvol deleuze | \
   tail -n +2 | \
   head -n -3 | \