# 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
# sync-media assets using git-annex
#
-VOLUME="/media/usb"
+DISK="$1"
+VOLUME="/media/$DISK"
CACHE="/var/cache/media"
DOMAIN="`facter domain`"
MEDIA="media.$DOMAIN"
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
(