Sophie

Sophie

distrib > Mandriva > 2010.1 > x86_64 > by-pkgid > 965e33040dd61030a94f0eb89877aee8 > files > 5384

howto-html-en-20080722-2mdv2010.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>SMB HOWTO: Backing Up Windows Machines to a Linux Host</TITLE>
 <LINK HREF="SMB-HOWTO-12.html" REL=next>
 <LINK HREF="SMB-HOWTO-10.html" REL=previous>
 <LINK HREF="SMB-HOWTO.html#toc11" REL=contents>
</HEAD>
<BODY>
<A HREF="SMB-HOWTO-12.html">Next</A>
<A HREF="SMB-HOWTO-10.html">Previous</A>
<A HREF="SMB-HOWTO.html#toc11">Contents</A>
<HR>
<H2><A NAME="s11">11. Backing Up Windows Machines to a Linux Host</A></H2>

<P>Adam Neat (
<A HREF="mailto:adamneat@ipax.com.au">adamneat@ipax.com.au</A>) kindly contributed the following script to back up Windows machines to a Linux host, using the smbclient utility.  Adam says that it is used to backup Windows 3.x and NT machines to a Linux based DAT SCSI Drive.
<P>Adam is not proud of the coding style used here, but it works.  As I like to say, "If it works and its stupid, then it is not stupid".
<P>Another Windows backup script, contributed by Dan Tager (
<A HREF="mailto:dtager@marsala.com">dtager@marsala.com</A>), is provided below.  Dan's script also backs up Unix machines via rsh, although that could be modified to use ssh rather easily.
<P>In this script, the string 'agnea1' is the username on the Linux machine that does the backups.
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
#!/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
###########
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>Here's Dan's backup script:
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
#!/bin/bash

BACKDIR=3D/backup
WINCMD=3D/usr/bin/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
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>
<P>
<HR>
<A HREF="SMB-HOWTO-12.html">Next</A>
<A HREF="SMB-HOWTO-10.html">Previous</A>
<A HREF="SMB-HOWTO.html#toc11">Contents</A>
</BODY>
</HTML>