Personal tools

grid-backup

by admin last modified 2008-10-20 18:53

grid-backup — text/x-sh, 5Kb

File contents

#!/bin/bash

#here is some of my variables:
GRID_CONFIG_LOCATION="/etc/grid-backup"
GRID_LOG_LOCATION="/var/log/grid-backup"

#some internal funtions
function show_help
{
echo "Usage: grid-backup DESTINATION [--delete-older-files|-d time]"
echo "eg.: grid-backup /backup -d 3M5D1h (remove older than 3 Months 5 Days 1 hour)"
echo "grid-restore hostname.net::/remote"
echo "see: man rdiff-backup, form more time format information"
exit
}

function make_config_file
{
touch $GRID_CONFIG_LOCATION
if [ -w $GRID_CONFIG_LOCATION ] ; 
then
	echo "Creating default file at: $GRID_CONFIG_LOCATION"

##copy deafuld file disabled
##cp ./include-list $GRID_CONFIG_LOCATION

echo "#This is a grid-backup script config file" >> $GRID_CONFIG_LOCATION
echo "#" >> $GRID_CONFIG_LOCATION
echo "#PLEASE CHOOSE A SECTIONS THAT ARE INSTALLED ON YOUR'S SYSTEM" >> $GRID_CONFIG_LOCATION
echo "#Check is there default configuration YOURS" >> $GRID_CONFIG_LOCATION
echo "" >> $GRID_CONFIG_LOCATION
echo "#EVERY system important" >> $GRID_CONFIG_LOCATION
echo "##/var/log/messages" >> $GRID_CONFIG_LOCATION
echo "##/var/log/secure" >> $GRID_CONFIG_LOCATION
echo "##/var/log/cron" >> $GRID_CONFIG_LOCATION
echo "" >> $GRID_CONFIG_LOCATION
echo "#BATCH_SYSTEM_DIR" >> $GRID_CONFIG_LOCATION
echo "##/var/spool/pbs" >> $GRID_CONFIG_LOCATION
echo "" >> $GRID_CONFIG_LOCATION
echo "#FOR WN:" >> $GRID_CONFIG_LOCATION
echo "" >> $GRID_CONFIG_LOCATION
echo "#FOR CE:" >> $GRID_CONFIG_LOCATION
echo "##/var/log/globus-gridftp.log" >> $GRID_CONFIG_LOCATION
echo "" >> $GRID_CONFIG_LOCATION
echo "#yaim: whole directory YAIM_DIR" >> $GRID_CONFIG_LOCATION
echo "##/opt/glite/yaim" >> $GRID_CONFIG_LOCATION
echo "" >> $GRID_CONFIG_LOCATION
echo "#site-info.def location=" >> $GRID_CONFIG_LOCATION
echo "#please FILL this! - no one knows where you keep this file" >> $GRID_CONFIG_LOCATION
echo "#/root/site-info.def" >> $GRID_CONFIG_LOCATION
echo "" >> $GRID_CONFIG_LOCATION
echo "#Gatekeeper" >> $GRID_CONFIG_LOCATION
echo "#UID, GID mapping information, store for at least 90 days" >> $GRID_CONFIG_LOCATION
echo "##/opt/globus/etc/globus-gatekeeper.conf" >> $GRID_CONFIG_LOCATION
echo "##/var/log/globus-gatekeeper.log" >> $GRID_CONFIG_LOCATION
echo "" >> $GRID_CONFIG_LOCATION
echo "#FOR SE:" >> $GRID_CONFIG_LOCATION
echo "##/var/log/globus-xferlog" >> $GRID_CONFIG_LOCATION
echo "##/var/log/gsiwuftpd.log" >> $GRID_CONFIG_LOCATION
echo "##/var/log/globus-gridftp.log" >> $GRID_CONFIG_LOCATION
echo "" >> $GRID_CONFIG_LOCATION
echo "#please now REMOVE (NOT HASH) a line below ;)" >> $GRID_CONFIG_LOCATION
echo "YOU HAVE NEVER READ THAT FILE THROUGHLY" >> $GRID_CONFIG_LOCATION


	echo "NOW PLEASE EDIT THIS CONFIG FILE!"
	echo "eg.: vi $GRID_CONFIG_LOCATION"
	exit
else
	echo "I can't write to $GRID_CONFIG_LOCATION"
	exit
fi

}

function install_info
{
echo "This script is based on rdiff-backup tool"
echo "Please install it first:"
echo "manualy: http://rdiff-backup.nongnu.org/ (python installation is also required)"
echo "or: apt-get install rdiff-backup"
echo "if above command don't works this may help:"
echo 'echo "rpm http://linuxsoft.cern.ch dag/redhat/el3/en/i386 dag" >> /etc/apt/sources.list.d/dag.list'
echo "apt-get update"
exit
}

#Checking is rdiff-backup installed in default PATH
rdiff-backup -V > /dev/null || { install_info ; exit ; } ;


if [ "$#" -eq 1 ] ; then

case ${1#-} in
   "-help"|"h")
 	how_help
	exit
       ;;
   "-create-config-file")
	make_config_file
	exit
	;;
esac

DELETE_OLDER_FILES=0

fi

#At first check config:
#Do i have my /etc/grid-backup file?
#
if ! [ -r $GRID_CONFIG_LOCATION ] ; then
	echo "config file not found at: $GRID_CONFIG_LOCATION"
	echo "at first run: grid-backup --create-config-file"
	exit
fi

#Check is the file configured?
cat $GRID_CONFIG_LOCATION | grep "YOU HAVE NEVER READ THAT FILE THROUGHLY" && { echo "Please do it! ($GRID_CONFIG_LOCATION)" ; exit ; } ;


if [ "$#" -eq 0 ] ; then
	show_help
	exit
fi

case ${2#-} in 
   "-delete-older-files"|"d")
       	DELETE_OLDER_FILES=1
       	;;
   "")
	;;
   *)
	echo "I'don't know what you mean:"
	show_help
   	;;
esac

if [ "$#" -gt 3 ] ; then
	echo "To many parameters"
	echo "I'don't know what you mean:"
	show_help
fi



# Let's do the backup
WHERE=$1
TIME_TO_DELETE_OLDER=$3

#BACKUP COMMAND
cat $GRID_CONFIG_LOCATION | grep -v "#" | rdiff-backup --include-globbing-filelist-stdin --exclude '**' / $WHERE

#if successfull
if [ $? -eq 0 ]; then

#logging commands
CREATED=`rdiff-backup -l $WHERE | grep ".dir" | sort | head -n 1 |  awk '/increments/ {match ( $0, /.\..\../ ); wersja = substr ( $0, 16,25 ); { if (wersja) print wersja }}'`
echo `date '+%a %b %e %H:%M:%S'` "backup successfully done. Archive was created at: $CREATED" >> $GRID_LOG_LOCATION
else 
echo `date '+%a %b %e %H:%M:%S'` "backup NOT DONE. Sth goes wrong." >> $GRID_LOG_LOCATION
fi


#deleting commands
if [ "$DELETE_OLDER_FILES" -eq 1 ] ; then
rdiff-backup --remove-older-than $TIME_TO_DELETE_OLDER --force $WHERE
	if [ $? -eq 0 ]; then
	echo `date '+%a %b %e %H:%M:%S'` "files older than $TIME_TO_DELETE_OLDER succesfuly removed" >> $GRID_LOG_LOCATION
	else
	echo `date '+%a %b %e %H:%M:%S'` "files older than $TIME_TO_DELETE_OLDER NOT REMOVED" >> $GRID_LOG_LOCATION
	fi
fi
Document Actions
EU

Baltic Grid Second Phase (BalticGrid-II) project is funded by the EU within the framework of the Seventh Framework Programme, in the 'Research infrastructures' activity area, FP7-INFRA-2007-1.2.3: e-Science Grid infrastructures, contract No 223807.

Powered by Plone