]> gitweb.fluxo.info Git - puppet-backup.git/commitdiff
Using distinct mountpoints per volume to sync media and backups
authorSilvio Rhatto <rhatto@riseup.net>
Tue, 8 Jan 2013 23:00:57 +0000 (21:00 -0200)
committerSilvio Rhatto <rhatto@riseup.net>
Tue, 8 Jan 2013 23:00:57 +0000 (21:00 -0200)
files/mount-media
files/sync-backups
files/sync-media

index c50352fb7361615f9bcd7721e588370b23cf9517..b643a3166d62da3653d8bff6f9ebbf5864c887bf 100755 (executable)
@@ -7,7 +7,7 @@
 MEDIA="$1"
 VOLUME="$2"
 BASENAME="`basename $0`"
-MOUNTPOINT="/media/usb"
+MOUNTPOINT="/media/$MEDIA"
 
 # Check media config
 if [ -z "$MEDIA" ]; then
@@ -36,8 +36,9 @@ if [ "$BASENAME" == "mount-media" ]; then
   echo "Checking filesystem..."
   $sudo fsck -v -y /dev/mapper/$MEDIA && \
   echo "Mounting volume at $MOUNTPOINT..."
+  $sudo mkdir -p $MOUNTPOINT
   $sudo mount /dev/mapper/$MEDIA $MOUNTPOINT
 elif [ "$BASENAME" == "umount-media" ]; then
-  $sudo umount /media/usb && \
+  $sudo umount $MOUNTPOINT && \
   $sudo cryptsetup luksClose $MEDIA
 fi
index cb40c7788d8284262faaf3f83761d9fe73b8b580..fc726b36c4d26b7f5d776c807f888fdc932a10af 100644 (file)
@@ -3,45 +3,62 @@
 # sync a removable volume with system backups.
 #
 
-NODE="$1"
-MEDIA="/media/usb"
+# Parameters.
+BASENAME="`basename $0`"
+VOLUME="$1"
+MEDIA="/media/$VOLUME"
 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 backups for a node.
+function sync_backups_node {
+  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 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`
+    # 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
+}
+
+# Parsing.
+if [ -z "$VOLUME" ]; then
+  echo "usage: $BASENAME <media> [nodes]"
+else
+  shift
 fi
+
+# Sync backups for each node.
+for NODE in $*; do
+  sync_backups_node
+done
index 4a99263f758ae5c12f2aabe635effe61234d819d..40ee19e687deb100ba21de013b762b14bdf2a93e 100755 (executable)
@@ -3,7 +3,8 @@
 # sync-media assets using git-annex
 #
 
-VOLUME="/media/usb"
+DISK="$1"
+VOLUME="/media/$DISK"
 CACHE="/var/cache/media"
 DOMAIN="`facter domain`"
 MEDIA="media.$DOMAIN"
@@ -82,34 +83,36 @@ if [ -d "$CACHE" ]; then
     fi
   done
 
-  # Check storage media
-  MOUNT="`mount | grep $VOLUME`"
-  if [ ! -z "$MOUNT" ]; then
-    DRIVE="$(basename `echo $MOUNT | awk '{ print $1 }'`)"
-  fi
+  if [ ! -z "$DISK" ]; then
+    # Check storage media
+    MOUNT="`mount | grep $VOLUME`"
+    if [ ! -z "$MOUNT" ]; then
+      DRIVE="$(basename `echo $MOUNT | awk '{ print $1 }'`)"
+    fi
 
-  if [ ! -z "$DRIVE" ]; then
-    if [ ! -d "$VOLUME/$MEDIA" ]; then
-      echo "Folder $VOLUME/$MEDIA does not exist..."
-    else
-      for folder in `ls $CACHE`; do
-        if [ -d "$CACHE/$folder/.git/annex" ]; then
-          if [ ! -d "$VOLUME/$MEDIA/$folder" ]; then
-            (
-            cd $VOLUME/$MEDIA
-            echo "Initializing $VOLUME/$MEDIA/$folder..."
-            git clone $CACHE/$folder && cd $folder && git annex init $DRIVE && \
-              cd $CACHE/$folder && git remote add $DRIVE $VOLUME/$MEDIA/$folder
-            )
+    if [ ! -z "$DRIVE" ]; then
+      if [ ! -d "$VOLUME/$MEDIA" ]; then
+        echo "Folder $VOLUME/$MEDIA does not exist..."
+      else
+        for folder in `ls $CACHE`; do
+          if [ -d "$CACHE/$folder/.git/annex" ]; then
+            if [ ! -d "$VOLUME/$MEDIA/$folder" ]; then
+              (
+              cd $VOLUME/$MEDIA
+              echo "Initializing $VOLUME/$MEDIA/$folder..."
+              git clone $CACHE/$folder && cd $folder && git annex init $DRIVE && \
+                cd $CACHE/$folder && git remote add $DRIVE $VOLUME/$MEDIA/$folder
+              )
+            fi
           fi
-        fi
-      done
+        done
+      fi
     fi
   fi
 fi
 
 # Retrieve changes at media volumes
-if [ -d "$VOLUME/$MEDIA" ]; then
+if [ ! -z "$DRIVE" ] && [ -d "$VOLUME/$MEDIA" ]; then
   for folder in `ls $VOLUME/$MEDIA`; do
     if [ -d "$VOLUME/$MEDIA/$folder/.git/annex" ]; then
       (