aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2013-01-08 21:00:57 -0200
committerSilvio Rhatto <rhatto@riseup.net>2013-01-08 21:00:57 -0200
commitd7ac92f83bbedb85a2a368357f55969f9da2cae1 (patch)
tree13156bfe77e73f5a8a9d27d59c05d9edc75faf73
parent96362fdeca3eaeb56e733598db491ab8902c5364 (diff)
downloadpuppet-backup-d7ac92f83bbedb85a2a368357f55969f9da2cae1.tar.gz
puppet-backup-d7ac92f83bbedb85a2a368357f55969f9da2cae1.tar.bz2
Using distinct mountpoints per volume to sync media and backups
-rwxr-xr-xfiles/mount-media5
-rw-r--r--files/sync-backups83
-rwxr-xr-xfiles/sync-media47
3 files changed, 78 insertions, 57 deletions
diff --git a/files/mount-media b/files/mount-media
index c50352f..b643a31 100755
--- a/files/mount-media
+++ b/files/mount-media
@@ -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
diff --git a/files/sync-backups b/files/sync-backups
index cb40c77..fc726b3 100644
--- a/files/sync-backups
+++ b/files/sync-backups
@@ -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
diff --git a/files/sync-media b/files/sync-media
index 4a99263..40ee19e 100755
--- a/files/sync-media
+++ b/files/sync-media
@@ -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
(