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

