[mythtv-users] myth storage balancing script

Derek Anderson public at kered.org
Mon Oct 17 01:41:44 EDT 2005


hey all,

i wrote this quick script to kind of load balance my oldest videos off 
to a remote box when i get close to full.  (set up as a nightly cron 
job)  not the best way in the world to handle this, i know, but a 
partial solution bests no solution.

anyway, figured it might be useful to others.

ttyl,
-- derek


river sh # cat mythbalance.sh
#!/bin/bash

PRIMARY_STORAGE="/mnt/store"
PRIMARY_STORAGE_THRESHOLD="80"

SECONDARY_STORAGE="/mnt/remote-store"
SECONDARY_STORAGE_THRESHOLD="50"



while [ 1 ]
do

         PRIMARY_STORAGE_USAGE=`df | grep ${PRIMARY_STORAGE} | grep -o 
"[0-9]\+%"`
         if [[ "${#PRIMARY_STORAGE_USAGE}" = "2" ]]; then
                 PRIMARY_STORAGE_USAGE="0${PRIMARY_STORAGE_USAGE}"
         fi
         PRIMARY_STORAGE_USAGE="${PRIMARY_STORAGE_USAGE:0:2}"

         SECONDARY_STORAGE_USAGE=`df | grep ${SECONDARY_STORAGE} | grep 
-o "[0-9]\+%"`
         if [[ "${#SECONDARY_STORAGE_USAGE}" = "2" ]]; then
                 SECONDARY_STORAGE_USAGE="0${SECONDARY_STORAGE_USAGE}"
         fi
         SECONDARY_STORAGE_USAGE="${SECONDARY_STORAGE_USAGE:0:2}"

         if [[ "${PRIMARY_STORAGE_USAGE}" -lt 
"${PRIMARY_STORAGE_THRESHOLD}" ]]
         then
                 echo mythbalance: ${PRIMARY_STORAGE} is under threshold
                 exit 0
         fi
         if [[ "${PRIMARY_STORAGE_USAGE}" -lt 
"${PRIMARY_STORAGE_THRESHOLD}" ]]
         then
                 echo mythbalance: ${SECONDARY_STORAGE} is already over 
threshold
                 exit 1
         fi

         cd "${PRIMARY_STORAGE}"
         for TARGET in `ls -tr *.nuv`
         do
                 if [[ ! -L ${TARGET} ]]
                 then
                         break
                 fi
         done

         echo mythbalance: moving ${TARGET} to ${SECONDARY_STORAGE}...
         mv "${TARGET}" "${SECONDARY_STORAGE}"
         ln -s "${SECONDARY_STORAGE}/${TARGET}" .
         echo mythbalance: linked ${TARGET} back to ${PRIMARY_STORAGE}

done


More information about the mythtv-users mailing list