From baf30b586919d52da095e9224f5dbe35b619377a Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Tue, 25 Dec 2012 11:31:28 -0200 Subject: Adding sync-media script --- files/sync-media | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ manifests/init.pp | 9 +++++ 2 files changed, 122 insertions(+) create mode 100755 files/sync-media diff --git a/files/sync-media b/files/sync-media new file mode 100755 index 0000000..f80f1e8 --- /dev/null +++ b/files/sync-media @@ -0,0 +1,113 @@ +#!/bin/bash +# +# sync-media assets using git-annex +# + +VOLUME="/media/usb" +CACHE="/var/cache/media" +DOMAIN="`facter domain`" +MEDIA="media.$DOMAIN" +INCOMING="$CACHE/incoming" +WHOAMI="`whoami`" + +# Set sudo config +if [ "$WHOAMI" != 'root' ]; then + sudo="sudo" +fi + +# Commit changes +if [ -d "$CACHE" ]; then + # Fix cache permissions + #echo "Fixing $CACHE permissions..." + #$sudo find $CACHE -type f -exec chmod 644 {} \; + #$sudo find $CACHE -type d -exec chmod 755 {} \; + + # Fix incoming permissions + if [ -d "$INCOMING" ]; then + echo "Fixing $INCOMING permissions..." + $sudo find $INCOMING -type f -exec chmod 664 {} \; + $sudo find $INCOMING -type d -exec chmod 775 {} \; + $sudo chown -R $WHOAMI $INCOMING/* + fi + + # Add and update local repositories + for folder in `ls $CACHE`; do + if [ -d "$CACHE/$folder/.git/annex" ]; then + ( + cd $CACHE/$folder + echo "Syncing $CACHE/$folder..." + git annex add . + + # Adding hidden files and symlinks, find version + #find -name '.*' -exec git annex add {} \; + #find -type l -exec git add {} \; + + # Adding hidden files and symlinks, git+for version + #for file in `git status --porcelain -u | sed -e 's/?? //'`; do + # if [ -h "$file" ]; then + # git add $file + # else + # git annex add $file + # fi + #done + + # Adding hidden files and symlinks, git+while version + git status --porcelain -u | sed -e 's/?? //' | while read file; do + if [ -h "$file" ]; then + git add "$file" + else + git annex add "$file" + fi + done + + git annex sync + git annex fsck --fast + git annex unused + git annex dropunused 1-1000 + ) + fi + done + + # 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 + ) + fi + fi + done + fi + fi +fi + +# Retrieve changes at media volumes +if [ -d "$VOLUME/$MEDIA" ]; then + for folder in `ls $VOLUME/$MEDIA`; do + if [ -d "$VOLUME/$MEDIA/$folder/.git/annex" ]; then + ( + cd $VOLUME/$MEDIA/$folder + echo "Syncing $VOLUME/$MEDIA/$folder..." + git annex sync + git annex get --auto --numcopies=3 + git annex fsck --fast + git annex unused + git annex dropunused 1-1000 + #git annex drop --auto --numcopies=2 + ) + fi + done +fi diff --git a/manifests/init.pp b/manifests/init.pp index 3950e7e..7c7c164 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -138,6 +138,15 @@ class backup { source => "puppet://$server/modules/backup/sync-backups", } + # sync-media script + file { "/usr/local/sbin/sync-media": + owner => root, + group => root, + mode => 0755, + ensure => present, + source => "puppet://$server/modules/backup/sync-media", + } + # mount-media script file { "/usr/local/sbin/mount-media": owner => root, -- cgit v1.2.3