Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #Josh Pirog
- #This is a simple backup script
- #Creation Date: November 29, 2010
- #Last Revision: December 6, 2010
- #Declare variables
- HOSTNAME=$( hostname )
- DATETIME=$( date '+%Y-%m-%d' )
- #File to read
- BACKUPF=backup.conf
- #Input variable, translate to all lower case, also directory to match in .conf file
- DIRBACKUP=$( tr '[:upper:]' '[:lower:]' <<<"$1" )
- #Input variable, translate, number of copies
- NUMBACKUP=$( tr '[:upper:]' '[:lower:]' <<<"$2" )
- #Determine which directories are to be backed up
- DIRCUT=$( cat $BACKUPF | grep /*:/ | cut -f 1 -d ":" )
- #Write into a temp file for later usage
- echo $DIRCUT > 1_$$_temp
- #Declare variables from temp file
- DIRHOME=$( cut -f 1 -d ' ' 1_*_temp )
- DIRCONF=$( cut -f 2 -d ' ' 1_*_temp )
- #Determine config variables
- CONFVAR=$( cat $BACKUPF | grep -v "^#" | grep "\=" | cut -f 2 -d "=" )
- #Write into a temp file for later usage
- echo $CONFVAR > 2_$$_temp
- #Declare variables from temp file
- COMP=$( cut -f 1 -d ' ' 2_*_temp )
- EMAIL=$( cut -f 2 -d ' ' 2_*_temp )
- BACKUPDIR=$( cut -f 3 -d ' ' 2_*_temp )
- TARGTYPE=$( cut -f 4 -d ' ' 2_*_temp )
- TARGSERV=$( cut -f 5 -d ' ' 2_*_temp )
- TARGFS=$( cut -f 6 -d ' ' 2_*_temp )
- USER=$( cut -f 7 -d ' ' 2_*_temp )
- PASS=$( cut -f 8 -d ' ' 2_*_temp )
- if [ ! -d $BACKUPDIR ]
- then
- mkdir /backup
- fi
- if [ ! -d $BACKUPDIR/daily ]
- then
- mkdir /backup/daily
- fi
- if [ ! -d $BACKUPDIR/weekly ]
- then
- mkdir /backup/weekly
- fi
- if [ ! -d $BACKUPDIR/monthly ]
- then
- mkdir /backup/monthly
- fi
- #Display the variable names and what is stored in them
- #echo "Directories to be backed up:"
- #echo "\$DIRHOME = $DIRHOME"
- #echo "\$DIRCONF = $DIRCONF"
- #echo ""
- #echo "Configuration variables:"
- #echo "\$COMP = $COMP"
- #echo "\$EMAIL = $EMAIL"
- #echo "\$BACKUPDIR = $BACKUPDIR"
- #echo "\$TARGTYPE = $TARGTYPE"
- #echo "\$TARGSERV = $TARGSERV"
- #echo "\$TARGFS = $TARGFS"
- #echo "\$USER = $USER"
- #echo "\$PASS = $PASS"
- fHomeBackup()
- {
- ACTDIR=$( cat $BACKUPF | grep /*:/ | cut -f 2 -d ":" )
- echo $ACTDIR > 3_$$_temp
- VALDIR=$( cat 3_*_temp | cut -f 1 -d " " )
- tar cvf $HOSTNAME\.$DIRHOME\.$DATETIME\.tar $VALDIR
- $COMP $HOSTNAME\.$DIRHOME*.tar
- mv $HOSTNAME\.$DIRHOME* $BACKUPDIR\$NUMBACKUP
- ls -R $VALDIR > /var/log/backup/$HOSTNAME\.$DIRHOME\.$DATETIME
- }
- fConfBackup()
- {
- ACTDIR=$( cat $BACKUPF | grep /*:/ | cut -f 2 -d ":"
- echo $ACTDIR > 3_$$_temp
- VALDIR=$( cat 3_*_temp | cut -f 2 -d " " )
- tar cvf $HOSTNAME\.$DIRCONF\.$DATETIME\.tar $VALDIR
- $COMP $HOSTNAME\.$DIRCONF*.tar
- mv $HOSTNAME\.\$DIRCONF* $BACKUPDIR\$NUMBACKUP
- ls -R $VALDIR > /var/log/backup/$HOSTNAME\.$DIRHOME\.DATETIME
- }
- fCronDump()
- {
- crontab -l > 4_$$_temp
- }
- case $DIRBACKUP in
- 'home')
- case $NUMBACKUP in
- 'daily')
- fHomeBackup
- fCronDump
- echo "\@daily /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
- crontab 4_*_temp
- ;;
- 'weekly')
- fHomeBackup
- fCronDump
- echo "\@weekly /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
- crontab 4_*_temp
- ;;
- 'monthly')
- fHomeBackup
- fCronDump
- echo "\@monthly /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
- crontab 4_*_temp
- ;;
- *)
- fHomeBackup
- ;;
- esac
- ;;
- 'config')
- case $NUMBACKUP in
- 'daily')
- fConfBackup
- fCronDump
- echo "\@daily /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
- crontab 4_*_temp
- ;;
- 'weekly')
- fConfBackup
- fCronDump
- echo "\@weekly /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
- crontab 4_*_temp
- ;;
- 'monthly')
- fConfBackup
- fCronDump
- echo "\@monthly /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
- crontab 4_*_temp
- ;;
- *)
- fConfBackup
- ;;
- esac
- ;;
- *)
- echo "Please enter a valid directory from the config file."
- ;;
- esac
- rm *_temp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement