From fdb07b542860089eb208ec5967826a2225899d10 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 2 Oct 2016 15:31:42 -0300 Subject: Adds media and backup scripts originally from puppet-backup --- share/hydractl/sync-media-initremotes | 92 +++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100755 share/hydractl/sync-media-initremotes (limited to 'share/hydractl/sync-media-initremotes') diff --git a/share/hydractl/sync-media-initremotes b/share/hydractl/sync-media-initremotes new file mode 100755 index 0000000..839deea --- /dev/null +++ b/share/hydractl/sync-media-initremotes @@ -0,0 +1,92 @@ +#!/bin/bash +# +# Add git-annex remotes to repository in removable media or local cache. +# + +# Parameters +BASENAME="`basename $0`" +VOLUME="$1" +TYPES="$2" +DOMAIN="`facter DOMAIN`" +HOST="`facter hostname`" +CACHES="" +VOLUMES="" +BOXES="" + +# Fix identity +function sync_media_identity { + if [ -z "`git config --local user.email`" ] || [ -z "`git config --local user.name`" ]; then + repo="$(basename `pwd`)" + git config user.name "${repo^} Archive" + git config user.email "$repo@localhost" + fi +} + +# Syntax check +if [ -z "$VOLUME" ]; then + echo "usage: $BASENAME [ [remotes]]" + exit 1 +fi + +# Determine media folder +if [ "$VOLUME" == "$HOST" ] || [ "$VOLUME" == "localhost" ]; then + MEDIA="/var/cache/media" +else + MEDIA="/media/$VOLUME/media.$DOMAIN" +fi + +# Determine remote type +shift 2 +if [ "$TYPES" == 'caches' ]; then + # Remotes are caches of local boxes + CACHES="$*" +elif [ "$TYPES" == 'volumes' ]; then + # Remotes are removable media + VOLUMES="$*" +elif [ "$TYPES" == 'boxes' ]; then + # Remotes are remote boxes + BOXES="$*" +fi + +# Process each repository +for file in `ls $MEDIA`; do + if [ -d "$MEDIA/$file/.git" ]; then + ( + echo Processing "$MEDIA/$file..." + cd $MEDIA/$file + sync_media_identity + + if git remote | grep -q "^origin$"; then + echo "Removing origin..." + git remote rm origin + fi + + if [ ! -d "$MEDIA/$file/.git/annex" ]; then + git annex init $VOLUME + fi + + for remote in $CACHES; do + echo "Adding /var/cache/$remote/media/$file remote..." + git remote add $remote /var/cache/$remote/media/$file + done + + for remote in $VOLUMES; do + echo "Adding /media/$remote/media.$DOMAIN/$file..." + git remote add $remote /media/$remote/media.$DOMAIN/$file + done + + for remote in $BOXES; do + if ! echo $remote | grep -q '\.'; then + host="$remote.$DOMAIN" + else + host="$remote" + fi + + echo "Adding ssh://$host/var/cache/media/$file..." + git remote add $remote ssh://$host/var/cache/media/$file + done + + echo "" + ) + fi +done -- cgit v1.2.3