Scripts for Backup with Data Compression

2007-12-25 11:54:00

SUMMARY: Scripts for Backup with Data Compression

QUESTION:

I submitted the following message:

I have a network which is growing much faster than my mass

storage peripherals acquisition. The obvious consequence,

is the need of backups with compression procedures.

I have a mixed network with solaris 2.4, solaris 2.5 and,

(it couldn't be different) all flavors of SunOS 4.1.x.

I would like to have some suggestions of scripts to perform

backups with data compression. Would you help me?

REMARKS:

It seems to be a very interesting and still challanging discussion,

where one have to decide among comercial dedicated software, Public

Domain Software or home made scripts. I still don't have my position,

but I think it shall be contributive to post the answers I got. Any

contributional infortion is, more than ever, still welcome.

THANKS:

azhang@ect.enron.com

foster@bial1.ucsd.edu

rsm@idc.tandem.com (R.SrinivasaMoorthy)

gibian@stars1.hanscom.af.mil (Marc S. Gibian)

Thank you all.

SOLUTION:

1. Using Public Domain software, the best solutions is to try

   AMANDA software. It can be found in:

  ( http://www.cs.umd.edu/projects/amanda/index.html )

2. Using comercial software, there are lots of options, among then

   Solstice Backup, which is a Sun Software product for Solaris.

3. Some personal scripts I got:

3.1 Dave Foster, foster@bial1.ucsd.edu, suggested:

I've attached a script that I wrote and use to back up our systems.

If you download GNU's tar, you can use the -z option to use gzip

to compress the backup.

Dave Foster

#! /bin/csh

#

# SYSTEM_BACKUP_2GB

#

# Script to backup system directories using tar. Use GNU tar.

# Backup device is expected to be 2GB 4mm tape drive.

# When run on empty tapes for the first time, you must

# backup all partitions prompted!

#

# Backups are performed in the following order:

#

# /, /usr, /var, /usr/openwin, /opt, /export/home

# Remote host where 4mm tape drive lives

set RHOST = bial5

set DEVICE = /dev/rmt/0n

set GET_HOSTNAME = /usr/ucb/hostname

set quiet = 0

if ( $#argv > 0 ) then

        if ( $argv[1] == "quiet" ) then

                set quiet = 1

        else if ( $argv[1] == "-h" ) then

                echo " "

                echo " Usage: system_backup_2GB [quiet]"

                echo " "

                exit 1

        endif

endif

if ( $quiet == 0 ) then

        set LOCAL_OPTIONS = cvlf

        set REMOTE_OPTIONS = cvlfb

else

        set LOCAL_OPTIONS = clf

        set REMOTE_OPTIONS = clfb

endif

if ( `/usr/ucb/whoami` != "root" ) then

        echo " Must be super-user to run this script"

        exit 1

else

        set OPTION = Junk

        while ( $OPTION == "Junk" )

                echo " "

                echo " You can backup [All] or [Individual] partitions..."

                echo " "

                echo -n " Choose backup option [A/I]: "

                set line = $<

                switch( $line )

                        case [aA]:

                                set OPTION = All

                                breaksw

                        case [iI]:

                                set OPTION = Individual

                                breaksw

                        case default:

                                set OPTION = Junk

                                breaksw

                endsw

        end

        # If local host and RHOST are equivalent then local backup

        if ( `${GET_HOSTNAME}` == $RHOST ) then

                set LOCATION = Local

        else

                set LOCATION = Remote

        endif

        pushd / > /dev/null

        if ( $LOCATION == "Local" ) then

                mt -f $DEVICE rewind

        else

                rsh $RHOST mt -f $DEVICE rewind

        endif

        if ( $OPTION == "Individual" ) then

                echo -n " Backup these partitions {/,/usr,/var} [y/n]: "

                set line = $<

        else

                echo " "

                echo " Backing up {/,/usr,/var}..."

                set line = Y

        endif

        switch ( $line )

                case [yY]:

                        if ( $LOCATION == "Remote" ) then

                                tar $REMOTE_OPTIONS - 20 . | rsh $RHOST dd

of=$DEVICE obs=20b

                                cd /usr

                                tar $REMOTE_OPTIONS - 20 . | rsh $RHOST dd

of=$DEVICE obs=20b

                                cd /var

                                tar $REMOTE_OPTIONS - 20 . | rsh $RHOST dd

of=$DEVICE obs=20b

                        else

                                tar $LOCAL_OPTIONS $DEVICE

--ignore-failed-read .

                                cd /usr

                                tar $LOCAL_OPTIONS $DEVICE

--ignore-failed-read .

                                cd /var

                                tar $LOCAL_OPTIONS $DEVICE

--ignore-failed-read .

                        endif

                        breaksw

                case default:

                        echo " "

                        mt fsf 3

                        breaksw

        endsw

        echo " "

        if ( $OPTION == "Individual" ) then

                echo -n " Backup these partitions {/usr/openwin} [y/n]: "

                set line = $<

        else

                echo " "

                echo " Backing up {/usr/openwin}..."

                set line = Y

        endif

        switch ( $line )

                case [yY]:

                        cd /usr/openwin

                        if ( $LOCATION == "Remote" ) then

                                tar $REMOTE_OPTIONS - 20 . | rsh $RHOST dd

of=$DEVICE obs=20b

                        else

                                tar $LOCAL_OPTIONS $DEVICE

--ignore-failed-read .

                        endif

                        breaksw

                case default:

                        echo " "

                        mt fsf 1

                        breaksw

        endsw

        echo " "

        if ( $OPTION == "Individual" ) then

                echo -n " Backup these partitions {/opt} [y/n]: "

                set line = $<

        else

                echo " "

                echo " Backing up {/opt}..."

                set line = Y

        endif

        switch ( $line )

                case [yY]:

                        cd /opt

                        if ( $LOCATION == "Remote" ) then

                                tar $REMOTE_OPTIONS - 20 . | rsh $RHOST dd

of=$DEVICE obs=20b

                        else

                                tar $LOCAL_OPTIONS $DEVICE

--ignore-failed-read .

                        endif

                        breaksw

                case default:

                        echo " "

                        mt fsf 1

                        breaksw

        endsw

        echo " "

        if ( $OPTION == "Individual" ) then

                echo -n " Backup these partitions {/export/home} [y/n]: "

                set line = $<

        else

                echo " "

                echo " Backing up {/export/home}..."

                set line = Y

        endif

        switch ( $line )

                case [yY]:

                        cd /export/home

                        if ( $LOCATION == "Remote" ) then

                                tar $REMOTE_OPTIONS - 20 . | rsh $RHOST dd

of=$DEVICE obs=20b

                        else

                                tar $LOCAL_OPTIONS $DEVICE

--ignore-failed-read .

                        endif

                        breaksw

                case default:

                        echo " "

                        mt fsf 1

                        breaksw

        endsw

        if ( $LOCATION == "Local" ) then

                mt -f $DEVICE rewind

        else

                rsh $RHOST mt -f $DEVICE rewind

        endif

        echo " "

        echo " System backup complete"

        echo " "

        popd > /dev/null

endif

3.2 Srinivasa Moorthy, rsm@idc.tandem.com, suggested:

Hi,

        You could do something like this.

        From the system you can issue commands(in a script!!) to the target

        system as

rsh <target system> /usr/etc/dump 0udsbf 216000 8000 126 - <filesystem> 2>>

$LOGFILE | /usr/local/bin/gzip | dd of=/dev/nrst8 bs=1024

        I found the above very usefull. The only problem is that it takes

        longer time to backup, because it has to compress!!.

        Try this out..

        Thanks

        Srinivasa Moorthy

                                \\|//

                                (0~0)

----------------------------oooO-(_)-Oooo----------------------------

 Renan Martins Baptista PETROBRAS R & D Centre

 Petroleum Engineer Cidade Universitaria, qd 07

 Phone: (+55 21) 598-6556/6935 Ilha do Fundao, Rio de Janeiro,

 Fax : (+55 21) 598-6796/6795 RJ, BRAZIL - 21949-900

 E-mail: renan@cenpes.petrobras.gov.br

____________________________________Oooo.____________________________

                           .oooO ( )

 "Friends come and go ( ) ) /

  Enemies Accumulate" \ ( (_/

                              \_)

Comments

Got something to say?

You must be logged in to post a comment.