Help with Backup Shell Script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with Backup Shell Script
# 1  
Old 09-14-2011
Help with Backup Shell Script

Hi,

I am a linux newbie and I dont have any knowledge on scripting but this is my urgent requirement. I am suppose to write a backup script for 2 of my servers, could someone help me out please. below is my requirement

Mail Server 1 : 10.0.0.1 Mail Server 2 : 10.0.0.2 Backup Server : 192.0.0.1

1. Mail Server 1 & 2 must take daily backups of /var and /etc and store them locally.
2. These backups must be moved to Backup Server on daily basis, once the above local backup is done.
3. Mail Server 1 & 2 must store backups for 7 days and later remove them.
4. Backup Server must store backup for 3 months and later remove them.
5. Files must be stored in tar.gz format.
6. I need the script in such a way that I can add directorys in future.
7. Once the backup is performed, need to send a confirmation mail that its been completed successfully to admin@xyz.com

Also I would like to know what are the important directories we should consider backing up in a mail server. Can you please give me inputs on backup procedures.

Thanks a lot !!!
# 2  
Old 09-14-2011
What have you tried so far? The purpose of this forum isn't for people to request ready-to-go scripts, but to provide help when you're stuck.
# 3  
Old 09-14-2011
hi pludi,

as I mention earlier, I dont have any knowledge on scripting and I understand that its a mandatory that a linux admin must be aware of any 1 scripting lang. I have started learning the basics of shell scripting just couple of days back.

For taking internal backups, I came up with 2 scripts

1)

Code:
 /bin/scripts/back.sh
   
  #! /bin/bash
  echo Backup Started `date` >> ~/backuplog
  mkdir /tempstorage/`date +%Y%m%d`
  tar -czf /tempstorage/`date +%Y%m%d`/cloud.tar.gz /cloud
  echo Backup Completed `date` >> ~/backuplog

I was advised to use variables from my Senior

2)

Code:
#!/bin/sh

# What to backup.
backup_files="/tmp"

# Where to backup to.
dest="/backup"

# Create archive filename.
day=$(date +%A)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"

# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"
date
echo

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files

# Print end status message.
echo
echo "Backup finished"
date

# Long listing of files in $dest to check file sizes.
ls -lh $dest

Since its an urgent task and I am suppose to complete my task in next 2 days, I dont have much time to learn it and write, Can you please help me out this time, so that I will start learning them perfectly from scratch. I am just starting with the book "Learning the bash Shell: Unix Shell Programming... by Cameron Newham" please do advice if there are any other good book for beginners (who dont have programming knowledge earlier).

thanks

Last edited by pludi; 09-14-2011 at 05:50 AM..
# 4  
Old 09-14-2011
2 reads that I can recommend, though a bit dated: Bash Programming Introduction and Advanced Bash Scripting.

My suggestion is get the flow of the script down first, without thinking too much about the programming language. Eg.
Code:
for each directory to be backed up
  create an archive of that directory
  if successful
    copy the archive to the backup server
    remove all but the last 7 backups
    send a mail to the admin
  else
    send the error to the admin

On the backup server
Code:
find all backups older than 3 months and remove them

Then, create small parts of the script task by task, eg. create the loop you need, then how to remove all but the last 7 backups, how to copy it to the backup server, ... You won't need much syntax for a script like this, and you should do with these commands: find, scp, tar, mailx.

And 2 days left isn't all that much time, so either you've been slacking off, pretended that you know shell scripting during the interview, or your boss doesn't know what kind of effort really is needed.
This User Gave Thanks to pludi For This Post:
# 5  
Old 09-14-2011
thanks for the flow. I will try it now

(p.s. I never pretended stating I knew scripting and even my boss new that I am not aware of it but he wants me to learn and do things and so he gave me 3 days of time, if not he must have forced me to do it imdtly werein I would have been fired by now Smilie)

also thanks for the links
# 6  
Old 09-14-2011
Forgot one: crontab for daily scheduling
# 7  
Old 09-15-2011
I'm very new to Linux, but here are two I made that might give you some ideas. The first is the Backup script I use for MYSQL, and the script below it cleans up old backups. It is the first script I wrote myself. I should really update them since I have leaned so much since then on what is wrong with these, but they have worked flawlessly for me.

I hope they might help.

Code:
#!/bin/bash 
#Backup Script for a Server
#
# First Create 2 folders "/usr/local/bin/backup/" and 
# "/usr/local/bin/tar"
#
NOWDATE=NAME OF ARCHIVE-`date +%d%m%y`.tgz 
BACKUPDIR=/usr/local/bin/backup/ 
BACKUPTAR=/usr/local/bin/tar 
MOUNTLOC=//X.X.X.X/path/to/mount/
USERNAME=username=xxx 
PASSWORD=password=xxx

# This tells MYSQL to dump all of it's databases to the $BACKUPDIR 
# directory.
mysqldump -u xxxxx -pxxxxxx --all-databases > $BACKUPDIR/xxxx.sql

#This copies all files/directories to the BACKUPDIR.
cp -r /whatever/you/want /usr/local/bin/backup

#This uses tar with compression to put it all in one file.
tar pcfz $BACKUPTAR/$NOWDATE $BACKUPDIR

#This mounts the SAN drive.
mount -t smbfs $MOUNTLOC /mnt -o $USERNAME,$PASSWORD

#This copies the contents of the BACKUP tar files to the SAN.
cp $BACKUPTAR/* /mnt

#This emails a log of what was backed up.
ls -trlh /mnt | tail -1 | mail -s "Server Backup Results" someguy@domain.com

#This unmounts the mounted SAN drive.
umount /mnt

#This removes all files from the BACKUPDIR.
rm -rf $BACKUPDIR/*

#This removes all files from the BACKUPTAR
rm $BACKUPTAR/*

exit 0


-------------------------------------------
To clean up the destination directory I use this:

Code:
#!/bin/bash
#  Script to tidy up Backups older than 2 days after they went to tape.

MOUNTDIR=//X.X.X.X/Path/to/Backup/Dir
EMAIL=someguy@domain.com
USERNAME=username=xxx
PASSWORD=password=xxx

#This mounts the S drive folder.
mount -t smbfs $MOUNTDIR /mnt -o $USERNAME,$PASSWORD

#Find files older than 2 days.
find /mnt -mtime +1 | mail -s "Backups Deleted" $EMAIL

# This command finds and deletes files older than 2 days and emails me.
find /mnt -mtime +1 -exec rm -f {} \;

#This unmounts the mounted S drive.
umount /mnt

Moderator's Comments:
Mod Comment Please use [CODE] tags when posting scripts, command lines, ...

Last edited by pludi; 09-15-2011 at 10:49 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with Backup Shell Script

Dear friends, I need your help. I need to create a bash script which can loop through $source_dir once a month, and find the backup of the last day of a given month for each of the 2 file types, as can be seen below. Assume that source_dir="/backup/daily" Assume that... (1 Reply)
Discussion started by: joemb
1 Replies

2. Shell Programming and Scripting

Shell script to call Oracle archive backup script when file system reaches threshold value

Hello All, I need immediate help in creating shell script to call archivebkup.ksh script when archive file system capacity reaches threshold value or 60% Need to identify the unique file system that reaches threshold value. ex: capacity ... (4 Replies)
Discussion started by: sasikanthdba
4 Replies

3. Shell Programming and Scripting

Help with Backup Shell Script

Hello guys. I am a Brazilian, I use a linux machine, to access it using the program Putty. I own a GTA Multiplayer, I have a folder on my server named accounts, there is the account of all players. Each player has their own file, the files are saved as follows: PlayerName.ini I would... (4 Replies)
Discussion started by: JimCarrey
4 Replies

4. Shell Programming and Scripting

Help with Backup Shell Script

i need to print the first date of the previous month in 20130101 format. i use the below script month_year=$(date +'%m%Y' | awk '!--$1{$1=12;$2--}') m=${month_year% *} y=$month_year##* } d=$(cal $m $y | paste -s - | awk '{print $NF}') firstdate=${printf '02d01%s' $y $m) echo $firstdate ... (1 Reply)
Discussion started by: vino1989
1 Replies

5. Shell Programming and Scripting

Help with Backup Shell Script for Network Device Configuration backup

HI all, im new to shell scripting. need your guidence for my script. i wrote one script and is attached here Im explaining the requirement of script. AIM: Shell script to run automatically as per scheduled and backup few network devices configurations. Script will contain a set of commands... (4 Replies)
Discussion started by: saichand1985
4 Replies

6. Shell Programming and Scripting

shell script to backup

Q: script to daily backup all databases in the server, retain only last 4 backps please anyone give me a reply (3 Replies)
Discussion started by: pssooraj72
3 Replies

7. Shell Programming and Scripting

Help with backup shell script

Hello, Need help with a script to backup a configuration file BSD Save the file / Firewall / ConfigFiles to a remote ftp server here is the script # / bin / sh Date = $ (date +% d-% Y-% m-H-M) tar-cvf ConfigFiles.tar / Firewall / ConfigFiles ConfigFiles.tar mv / Firewall-$... (11 Replies)
Discussion started by: telouet
11 Replies

8. Homework & Coursework Questions

Help with Backup Shell Script

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Create a script that will backup all important system files every Friday night and send an email to the... (6 Replies)
Discussion started by: kjmpa26
6 Replies

9. Shell Programming and Scripting

Help with backup shell script

Hello all, I am trying to backup my system database and root filesystem on remote server that is mounted on my system using tar command. For the database, i use (cd /database; tar cvf file.tar .) for the Root filesystem, i use (cd /; tar uEvf file.tar .) both are to be backup on the same... (1 Reply)
Discussion started by: Omoniyi
1 Replies

10. UNIX for Dummies Questions & Answers

Help with a backup shell script

I'm having an issue with a problem A problem with this backup script is that if you backup the same file twice, you may get a warning message because you're overwriting an existing file. You could suppress the warning message, but a better solution is to save a series of backups distinguished by... (1 Reply)
Discussion started by: Dingosatemypant
1 Replies
Login or Register to Ask a Question