#!/bin/bash if [ ! $1 -a $2 -a $3 ] then echo "Wrong parameter count." exit 1 fi ##################### # PARAMETER # ##################### TARGETDIR=$2 SERVER=`echo $1 | awk -F:: '{ print $2 }'` USER=`echo $1 | awk -F:: '{ print $3 }' | awk -F: '{ print $1 }'` PASSWD=`echo $1 | awk -F:: '{ print $3 }' | awk -F: '{ print $2 }'` WEEKLYDOW=`echo $1 | awk -F:: '{ print $4 }'` JOBNAME=$3 ########################## # PREREQUISITIES # ########################## # REMOTE DIR STRUCTURE REMOTETREE=$(mktemp) ftp -pn $SERVER < $REQTREE echo "daily" >> $REQTREE cat $REQTREE | cut -d: -f1 | uniq | sort -o $REQTREE # compare local and remote, list missing remote directories MISSINGDIR=$(mktemp) for ITEM in $(diff $REMOTETREE $REQTREE | grep "^>" | cut -d\> -f2 ) ; do echo "$ITEM" >> $MISSINGDIR done # remove blank lines and lines where mkdir has no argument and clean up manually sed -i '/^$/d' $MISSINGDIR sed -i '/^mkdir$/d' $MISSINGDIR echo "/" >> $MISSINGDIR #harmless 'directory exists" to avoid empty file # create missing directories for ITEM in $(cat $MISSINGDIR); do ftp -pn $SERVER <> $UPLOADWEEKLY echo $LINE >> $UPLOADDAILY md5sum $LINE | awk '{print $1}' > ${LINE}.md5 echo ${LINE}.md5 >> $MD5FILES fi done find $TARGETDIR -maxdepth 1 -type f -regex ".*/${JOBNAME//\./\\.}_[0-9]*\(_?[0-9]*\)\.tgz" -printf '%T@ %p\n' | sort -k 1n | sed 's/^[^ ]* //' | tail -n 1 | while read LINE do if [ -f $LINE ] then echo $LINE >> $UPLOADWEEKLY echo $LINE >> $UPLOADDAILY md5sum $LINE | awk '{print $1}' > ${LINE}.md5 echo ${LINE}.md5 >> $MD5FILES fi done upload $UPLOADDAILY daily upload $MD5FILES daily if [ `date "+%u"` -eq $WEEKLYDOW ] || [ `date "+%w"` -eq $WEEKLYDOW ] then upload $UPLOADWEEKLY weekly upload $MD5FILES weekly fi for ITEM in $(cat $MD5FILES); do rm $ITEM done fi fi exit 0