IT  UK - CD E DVD LINUX + IMBALLAGGIO + SPEDIZIONE = 0 (zero) EURO
clicca qui per tornare su www.tuttosulinux.com
- tutto su Linux e sul software libero -

inserisci qui le parole da cercare nel sito


powered by FreeFind

LINUX HOWTO IN ITALIANO
Avanti Indietro Indice

11. Eseguire copie di sicurezza (backup) di macchine Windows su un server Linux

Adam Neat ( adamneat@ipax.com.au) ha gentilmente contribuito a fornire lo script che segue per fare backup di macchine Windows usando server Linux come supporto, tramite l'utility smbclient. Adam è solito fare backup di macchine Windows 3.x ed NT su un sistema Linux che dispone di un drive SCSI DAT.

Adam non è soddisfatto dello stile di codifica utilizzato, tuttavia funziona. Come l'autore ama commentare. "Se funziona ed è stupido, allora non è stupido".

Un altro script di backup per Windows, è stato fornito da Dan Tager ( dtager@marsala.com). Lo script di Dan è in grado di fare backup di macchine Unix via rsh e può essere facilmente modificato per usare ssh.

In questo script, la stringa 'agnea1' è il nome dell'utente sulla macchina Linux che fa il backup.


#!/bin/bash

clear
echo Inizializzazione ...
checkdate=`date | awk '{print $1}'`

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

        echo "ERRORE: non esiste il file di configurazione per oggi!"
        echo "FATALE!"
        exit 1
fi

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

        echo "ERRORE: Manca la directory temporanea!"
        echo
        echo "Tentativo di creazione"
        cd ~agnea1
        cd backup-dir
        mkdir temp
        echo "Creata directory - temp"
fi

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

        echo "ERRORE: manca il nome della macchina (es: cdwriter)"
        exit 1
fi

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

        echo "ERRORE: Manca la risorsa SMB (Lan Manager) (es: work)"
        exit 1
fi

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

        echo "ERRORE: Manca indirizzo IP di $1 (es: 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 "Backup di Lunedì"
      cat backup-data | /usr/local/samba/bin/smbclient \\\\$1\\$2 -I$3 -N 
      echo "Completato"

      if [ -d "~agnea1/backup-dir/Monday" ]; then
        echo "Directory Monday non trovata ...  creazione" 
        mkdir ~agnea1/backup-dir/Monday
      fi
      echo "Archiviazione ..."
      cd ~agnea1/backup-dir/temp
      tar -cf monday.tar *                
      echo "fatto ..."
      rm ~agnea1/backup-dir/Monday/monday.tar
      mv monday.tar ~agnea1/backup-dir/Monday
      ;;

   Tue)
      echo "Backup di Martedì"
      cat backup-data | /usr/local/samba/bin/smbclient \\\\$1\\$2 -I$3 -N 
      echo "Completato"

      if [ -d "~agnea1/backup-dir/Tuesday" ]; then
        echo "Directory Tuesday non trovata ... creazione"
        mkdir ~agnea1/backup-dir/Tuesday
      fi
      echo "Archiviazione ..."
      cd ~agnea1/backup-dir/temp
      tar -cf tuesday.tar *
      echo "fatto ..."
      rm ~agnea1/backup-dir/Tuesday/tuesday.tar
      mv tuesday.tar ~agnea1/backup-dir/Tuesday
      ;;

   Wed)
      echo "Backup di Mercoledì"
      cat backup-data | /usr/local/samba/bin/smbclient \\\\$1\\$2 -I$3 -N 
      echo "Completato"

      if [ -d "~agnea1/backup-dir/Wednesday" ]; then
        echo "Directory Wednesday non trovata ... creazione"
        mkdir ~agnea1/backup-dir/Wednesday
      fi
      echo "Archiviazione ..."
      cd ~agnea1/backup-dir/temp
      tar -cf wednesday.tar *
      echo "fatto ..."
      rm ~agnea1/backup-dir/Wednesday/wednesday.tar
      mv wednesday.tar ~agnea1/backup-dir/Wednesday
      ;;

   Thu)
      echo "Backup di Giovedì"
      cat backup-data | /usr/local/samba/bin/smbclient \\\\$1\\$2 -I$3 -N 
      echo "Completato"

      if [ -d "~agnea1/backup-dir/Thursday" ]; then
        echo "Directory Thrusday non trovata ... creazione" 
        mkdir ~agnea1/backup-dir/Thursday
      fi
      echo "Archiviazione..."
      cd ~agnea1/backup-dir/temp
      tar -cf thursday.tar *
      echo "fatto ..."
      rm ~agnea1/backup-dir/Thursday/thursday.tar
      mv thursday.tar ~agnea1/backup-dir/Thursday
      ;;

   Fri)
      echo "Backup di Venerdì"
      cat backup-data | /usr/local/samba/bin/smbclient \\\\$1\\$2 -I$3 -N 
      echo "Completato"

      if [ -d "~agnea1/backup-dir/Friday" ]; then
        echo "Directory Friday non trovata ... creazione" 
        mkdir ~agnea1/backup-dir/Friday
      fi
      echo "Archiviazione ..."
      cd ~agnea1/backup-dir/temp
      tar -cf friday.tar *
      echo "fatto ..."
      rm ~agnea1/backup-dir/Friday/friday.tar
      mv friday.tar ~agnea1/backup-dir/Friday
      ;;

     *)
      echo "ERRORE FATALE: giorno non corretto"
      exit 1
      ;;
esac


###########

Lo script di Dan per eseguire il backup


#!/bin/bash

BACKDIR=3D/backup
WINCMD=3D/usr/bin/smbclient

function CopyWinHost(){

# usa tar e gzip per archiviare "condivisioni windows" in una
# directory locale usando l'utility smbclient della suite samba.
# argomento 1 è il nome del computer windows remoto
# argomento 2 è il nome della condivisione di cui fare backup

   echo $1,$2,$3
   REMOTE=3D$1
   SHARE=3D$2
   DEST=3D$3

 # crea un file tar gzip usando samba per copiare direttamente
 # dal pc con windows
 # 12345 è la password.  È necessaria anche non e' definita alcuna
 # sulla macchina remota

   $WINCMD \\\\$REMOTE\\$SHARE 12345 -Tc -|gzip > $DEST
   echo `date`": Completato backup da "$REMOTE" a "$DEST
   echo
}

function CopyUnixHost(){

# tar e gzip una directory usando rsh
# argomento 1 è il nome del computer remoto
# argomento 2 è il percorso completo della directory sorgente
#             remota
# argomento 3 è il nome del file tar-gzip locale. Il nome
#             del giorno più .tgz sono aggiunti in coda
#             all'argomento 3

   REMOTE=3D$1
   SRC=3D$2
   DEST=3D$3


   if rsh $REMOTE tar -cf - $SRC |gzip > $DEST; then
      echo `date`": Completato backup da "$REMOTE":"$SRC" a "$DEST
   else
     echo `date`": Errore durante il backup  da "$REMOTE":"$SRC" a "$DEST
   fi

}

# $1: win=backup macchina windows, unix=backup macchina unix
case $1 in
   win)
      # $2= nome della macchina remota windows, 
      # $3= nome della condivisione remota,
      # $4= nome della directory locale
      CopyWinHost $2 $3 $4;;
   unix)
      # $2= host remoto, 
      # $3= directory remota,
      # $4= nomde della directory locale
      CopyUnixHost $2 $3 $4;;
esac


Avanti Indietro Indice
 

[ home | appunti | recensioni | links | chat | forum | contattaci | cerca nel web ]

Sito segnalato da Yahoo!

clicca qui per tornare su www.tuttosulinux.com
- tutto su Linux e sul software libero -
- © 2001- www.tuttosulinux.com tutti i diritti riservati - webmaster@tuttosulinux.com -