#!/bin/sh
# This bash script is licensed under the GPL ( General Pulic License ) 2.0
# and upper. written by hip0.
# Script Description:
# checks all the files in directory $backups_docroot against a specified strings
# and sorts them to directories previously defined by server[$n].
# For details observe the source.

# Edit the locations below after that you need to modify also
# the so called part |Chapter 2|
#################################################################

# all dumps location.
backups_docroot=/backups/site_backups_all;

# server mysqldumps backup locations

server[0]=/backups/server0-194_153_145_232/site-backups;
server[1]=/backups/server1-207_36_180_30/site-backups;
server[2]=/backups/server2-207_36_180_31/site-backups;
server[3]=/backups/server3-207_36_180_32/site-backups;
server[4]=/backups/server4-207_234_147_191/site-backups;
server[5]=/backups/server5-207_234_208_208/site-backups;
server[6]=/backups/server6-213_91_245_1/site-backups;

# server names.

site_name[0]='design-bg';
site_name[1]='imot-home';
site_name[2]='design_bg-home';
site_name[3]='mail2-home';
site_name[4]='backup2-home';
# delete backups older than $days
days=40;

################################ Main Config ##############################
# counts serever_name massive range.
site_name_arr_cnt="${#site_name[*]}";
# counts server[] array.
server_arr_cnt="$(expr ${#server[*]} - 1)";

# checks for some critical dir existence.
chk_dir_existence () {

if [ ! -d "$backups_docroot" ]; then
  echo -e "$backups_docroot Does not Exist Exiting ...";
  exit 1;
fi

for f in `seq 0 $site_name_arr_cnt`; do

 if [ ! -d ${server[$f]} ]; then
  echo "${server[$f]} Does not Exist Exiting ...";
  exit 1;
 fi

done
}

# loops threw $backups_docroot and moves archives where they shall allocate.
main_loop () {
for i in `ls -1 $backups_docroot`; do

############################### |Chapter 2| #####################################
# check if site_name is assigned and move around our backup tree directory
if [ -n "`echo $i | grep -i ${site_name[0]}`" ]; then
#cp -rpf $backups_docroot/$i ${server[0]};
#rm -f $backups_docroot/$i;
mv $backups_docroot/$i ${server[0]};
fi

if [ -n "`echo $i | grep -i ${site_name[1]}`" ]; then
#cp -rpf $backups_docroot/$i ${server[1]};
#rm -f $backups_docroot/$i;
mv $backups_docroot/$i ${server[1]};
fi

if [ -n "`echo $i | grep -i ${site_name[2]}`" ]; then
#cp -rpf $backups_docroot/$i ${server[2]};
#rm -f $backups_docroot/$i;
mv $backups_docroot/$i ${server[2]};
fi

if [ -n "`echo $i |grep -i ${site_name[3]}`" ]; then
#cp -rpf $backups_docroot/$i ${server[3]};
#rm -f $backups_docroot/$i;
mv $backups_docroot/$i ${server[3]};
fi

# for more server uncomment and change $n with the number of the server.
# if [ -n "`echo $i | grep -i ${site_name[$n]}`" ]; then
#   cp -rpf $backups_docroot/$i ${server[$n]};
# fi

##########################################################################

done

}

# check in all server site-backups/weekly directory for files older than 21 days
get_rid_of_old_backups () {

for j in `seq 0 $server_arr_cnt`; do
find ${server[$j]} -type f -mtime +${days} -exec rm -f '{}' \;;
done

}

main () {

chk_dir_existence;
main_loop;
get_rid_of_old_backups;

}

main;
