Следующий Предыдущий Содержание

11. Резервирование данных с машин с Windows на машину с Linux

Adam Neat ( adamneat@ipax.com.au) предоставил следующий скрипт, который выполняет резервирование данных с машин с Windows machines на машину с Linux, используя утилиту smbclient. Adam сказал, что он использует этот скрипт для резервирования данных с машин с Windows 3.x и NT на диск DAT SCSI под Linux.

Adam не гордится стилем программирования, используемым в этом примере, но это работает. Как я хочу сказать: "Если это работает и это сделано тупо, то это не тупо".

Другой скрипт для сохранения данных с Windows, предоставлен Dan Tager ( dtager@marsala.com) и приводится ниже. Скрипт присланный Dan также может сохранять данные с машин с Unix через rsh, хотя он может легко быть изменен для использования ssh.

В этом скрипте строка 'agnea1' является именем пользователя на машине с Linux, на которую производится резервирование данных.



#!/bin/bash



clear

echo Initialising ...

checkdate=`date | awk '{print $1}'



if [ -f "~agnea1/backup-dir/backup-data" ]; then



        echo "ERROR: No config file for today!"

        echo "FATAL!"

        exit 1

fi



if [ -d "~agnea1/backup-dir/temp" ]; then



        echo "ERROR: No tempoary directory found!"

        echo

        echo "Attempting to create"

        cd ~agnea1

        cd backup-dir

        mkdir temp

        echo "Directory Made - temp"

fi



if [ "$1" = "" ]; then



        echo "ERROR: enter in a machine name (ie: cdwriter)"

        exit 1

fi



if [ "$2" = "" ]; then



        echo "ERROR: enter in a SMB (Lan Manager) Resource (ie: work)"

        exit 1

fi



if [ "$3" = "" ]; then



        echo "ERROR: enter in an IP address for $1 (ie:

        130.xxx.xxx.52)" exit 1

fi





#############################################################################

# Main Section

#

#############################################################################



cd ~agnea1/backup-dir/temp

rm -r ~agnea1/backup-dir/temp/*

cd ~agnea1/backup-dir/



case "$checkdate"

in

        Mon)

                echo "Backuping for Monday"

                cat backup-data | /usr/local/samba/bin/smbclient

                \\\\$1\\$2 -I$3 -N echo "Complete"



                        if [ -d "~agnea1/backup-dir/Monday" ]; then

                                echo "Directory Monday Not found ...

                                making" mkdir

                                ~agnea1/backup-dir/Monday

                        fi



                echo "Archiving ..."

                cd ~agnea1/backup-dir/temp

                tar -cf monday.tar *                echo "done ..."

                rm ~agnea1/backup-dir/Monday/monday.tar

                mv monday.tar ~agnea1/backup-dir/Monday

                ;;





        Tue)

                echo "Backuping for Tuesday"

                cat backup-data | /usr/local/samba/bin/smbclient

                \\\\$1\\$2 -I$3 -N echo "Complete"



                        if [ -d "~agnea1/backup-dir/Tuesday" ]; then

                                echo "Directory Tuesday Not found ...

                                making" mkdir

                                ~agnea1/backup-dir/Tuesday

                        fi

                echo "Archiving ..."

                cd ~agnea1/backup-dir/temp

                tar -cf tuesday.tar *

                echo "done ..."

                rm ~agnea1/backup-dir/Tuesday/tuesday.tar

                mv tuesday.tar ~agnea1/backup-dir/Tuesday

                ;;



        Wed)

                echo "Backuping for Wednesday"

                cat backup-data | /usr/local/samba/bin/smbclient

                \\\\$1\\$2 -I$3 -N echo "Complete"



                        if [ -d "~agnea1/backup-dir/Wednesday" ]; then

                                echo "Directory Wednesday Not found

                                ... making" mkdir

                                ~agnea1/backup-dir/Wednesday

                        fi

                echo "Archiving ..."

                cd ~agnea1/backup-dir/temp

                tar -cf wednesday.tar *

                echo "done ..."

             rm ~agnea1/backup-dir/Wednesday/wednesday.tar

                mv wednesday.tar ~agnea1/backup-dir/Wednesday

                ;;



        Thu)

                echo "Backuping for Thrusday"

                cat backup-data | /usr/local/samba/bin/smbclient

                \\\\$1\\$2 -I$3 -N echo "Complete"



                        if [ -d "~agnea1/backup-dir/Thursday" ]; then

                                echo "Directory Thrusday Not found ...

                                making" mkdir

                                ~agnea1/backup-dir/Thursday

                        fi

                echo "Archiving ..."

                cd ~agnea1/backup-dir/temp

                tar -cf thursday.tar *

                echo "done ..."

                rm ~agnea1/backup-dir/Thursday/thursday.tar

                mv thursday.tar ~agnea1/backup-dir/Thursday

                ;;





        Fri)

                echo "Backuping for Friday"

                cat backup-data | /usr/local/samba/bin/smbclient

                \\\\$1\\$2 -I$3 -N echo "Complete"



                        if [ -d "~agnea1/backup-dir/Friday" ]; then

                                echo "Directory Friday Not found ...

                                making" mkdir

                                ~agnea1/backup-dir/Friday

                        fi

                echo "Archiving ..."

                cd ~agnea1/backup-dir/temp

                tar -cf friday.tar *

                echo "done ..."

                rm ~agnea1/backup-dir/Friday/friday.tar

                mv friday.tar ~agnea1/backup-dir/Friday

                ;;



        *)

                echo "FATAL ERROR: Unknown variable passed for day"

                exit 1;;



esac

###########


Вот скрипт предоставленный Dan:



#!/bin/bash



BACKDIR=3D/backup

WINCMD=3D/usr/sbin/smbclient



function CopyWinHost(){



# tars and gzips "windows shares" to a local directory using samba's

# smbclient

# argument 1 is the remote host window's host name

# argument 2 is the share name to be backed up



   echo $1,$2,$3

   REMOTE=3D$1

   SHARE=3D$2

   DEST=3D$3



 # create a tarred gzip file using samba to copy direct from a

 # windows pc

 # 12345 is a password.  Needs some password even if not defined on

 # remote system

   $WINCMD \\\\$REMOTE\\$SHARE 12345 -Tc -|gzip > $DEST

   echo `date`": Done backing up "$REMOTE" to "$DEST

   echo

}



function CopyUnixHost(){



# tars and gzips a directory using rsh

# argument 1 is the name of the remote source host

# argument 2 is the full path to the remote source directory

# argument 3 is the name of the local tar-gzip file.  day of week

#  plus .tgz will be appended to argument 3



   REMOTE=3D$1

   SRC=3D$2

   DEST=3D$3





   if rsh $REMOTE tar -cf - $SRC |gzip > $DEST; then

      echo `date`": Done backing up "$REMOTE":"$SRC" to "$DEST

   else

     echo `date`": Error backing up "$REMOTE":"$SRC" to "$DEST

   fi



}



# $1: win=3Dbackup windows machine, unix=3Dbackup unix machine

case $1 in

   win)

      # $2=3D remote windows name, $3=3Dremote share name,

      # $4=3Dlocal destination directory

      CopyWinHost $2 $3 $4;;

   unix)

      # $2 =3D remote host, $3 =3D remote directory,

      # $4 =3D destination name

      CopyUnixHost $2 $3 $4;;

esac



Следующий Предыдущий Содержание