aboutsummaryrefslogtreecommitdiff
path: root/files/sync-backups
blob: cb40c7788d8284262faaf3f83761d9fe73b8b580 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash
#
# sync a removable volume with system backups.
#

NODE="$1"
MEDIA="/media/usb"
BWLIMIT="2500"
IMAGES="/var/data/crypt/"
RSYNC="nice -n 19 rsync -avH --delete --bwlimit=$BWLIMIT"

if [ ! -z "$NODE" ]; then
  # Get full node hostname.
  NODE_HOSTNAME="`cat /var/vservers/$NODE/etc/hostname`"
  if [ -z "$NODE_HOSTNAME" ]; then
    NODE_HOSTNAME="$NODE"
  fi

  # Sync local encrypted backup.
  mkdir -p /$MEDIA/$NODE_HOSTNAME/duplicity
  $RSYNC /var/vservers/$NODE/var/backups/duplicity/ /$MEDIA/$NODE_HOSTNAME/duplicity/

  # Sync remote backups.
  for node in `ls /var/vservers/$NODE/var/backups/remote/`; do
    mkdir -p /$MEDIA/$NODE_HOSTNAME/remote/$node
    $RSYNC /var/vservers/$NODE/var/backups/remote/$node/ /$MEDIA/$NODE_HOSTNAME/remote/$node/
  done
else
  # Sync local encrypted backup.
  mkdir -p /$MEDIA/$HOSTNAME/duplicity
  $RSYNC /var/backups/duplicity/ /$MEDIA/$HOSTNAME/duplicity/

  # Sync remote backups.
  for node in `ls /var/backups/remote/`; do
    mkdir -p /$MEDIA/$HOSTNAME/remote/$node/
    $RSYNC /var/backups/remote/$node/ /$MEDIA/$HOSTNAME/remote/$node/
  done

  # Copy encrypted images.
  if [ -d "$IMAGES" ]; then
    for image in `find $IMAGES -type f`; do
      mkdir -p /$MEDIA/$HOSTNAME/images/`dirname $image`
      echo "Copying image to /$MEDIA/$HOSTNAME/images/`dirname $image`"
      cp $image /$MEDIA/$HOSTNAME/images/`dirname $image`
    done
  fi
fi