# Creazione Automatica Backup FileSystem

## Flonaldo

Salve signori, avrei la necessità di crearen un backup del mio filesystem in maniera piuttosto veloce! Anche se veloce è qualcosa di piuttosto relativo vi chiedevo il modo piu semplice per farlo, avevo pensato inzialmente ad un tar (ma è conveniente?) avevo letto in giro di n-mila tool per farlo tuttavia non li trovo adatti poichè la creazione del filesystem deve essere automatica e quindi neanche soluzioni tramite live cd sono accettabili!  :Very Happy: 

Il Tar quindi è una soluzione? Qualcuno di voi l'ha testata? Non è che perdo link per strada?

Ditemi cosa ne pensate!

----------

## Kind_of_blue

definisci "creazione automatica del filesystem"

----------

## Flonaldo

 *Kind_of_blue wrote:*   

> definisci "creazione automatica del filesystem"

 

Ogni giorno alle 8:00 faccio una copia del mio filesystem! Ovviamente io inteso come mia gentoo

----------

## Kind_of_blue

beh ... la soluzione ideale sembra la creazione di uno "stage 4" (vedi discussioni a riguardo) ... e crontab

----------

## Flonaldo

 *Kind_of_blue wrote:*   

> beh ... la soluzione ideale sembra la creazione di uno "stage 4" (vedi discussioni a riguardo) ... e crontab

 

La copia deve essere spedita anche via ftp su un server remoto!  :Very Happy: 

Cmq forse ho trovato la soluzione, converrebbe quasi quasi fare uno shell-script che effettua un tar(soluzione più veloce) ed un put via ftp! Stop

----------

## .:deadhead:.

tar si ripristina su un FS già creato, quindi richiede un po' di manualità

partimage copia tutto con una gui

dd fa anche lui tutto solo senza gui

----------

## gutter

 *Flonaldo wrote:*   

> 
> 
> Cmq forse ho trovato la soluzione, converrebbe quasi quasi fare uno shell-script che effettua un tar(soluzione più veloce) ed un put via ftp! Stop

 

Hai vagliato l'idea di usare rsync o unison? 

In questo modo potresti evitare di trasferire giga e gida di dati che non sono cambiati.

----------

## Ilvalle

Ciao France! Come dice Gutter, la soluzione migliore e' un rsync, io faccio dei bachup su un disco esterno, ma basta cambiare la destinazione del rsync e spedirlo dove vuoi anche via ssh. E' comodo ti sposta soltanto i file che sono stati aggiunti/modificati, nello script ricordati di non fare bachup di /tmp /var/tmp ecc

valle

----------

## Flonaldo

Riprendo questo mio post per porvi una domanda:

Facendo il backup di una cartella non riesco ad escluderne altre; mi spiego meglio, tar -cf "Backup Del `date '+%d-%B-%Y'`.tar" /home/miahome/directory  ed in questo modo faccio il tar di tutto; tuttavia se voglio escludere delle cartelle dalla directory come faccio? Ho provato con --exclude ma non lo fa mica...

Forse sbaglio io la sintassi, se qualcuno ha già uno script oppure ha una soluzione al mio problemi è pregato di postarla.  :Very Happy: 

Grazie 1000

----------

## .:chrome:.

piuttosto che stage4 e roba simile, che mi sembra inutilmente macchinoso, perché non prendi in considerazione tool come bacula che fanno backup completi, incrementali e differenziali?

----------

## guerro

Io utilizzo questo script

```

#!/bin/sh

#Variabili da configurare secondo le esigenze dell'utente e il sistema su cui viene effettuato il Backup

COMPUTER=homeserver                             # name del computer

DIRECTORIES="/bin /boot /dev /etc /home /lib /mnt /opt /root /sbin /service /usr /var" # directory da beckappare

BACKUPDIR=/mnt/backup                           # directory dove memorizzo i backup

TIMEDIR=/mnt/backup/last-full                   # percorso completo al file in cui memorizzo la data dell'ultimo  backup completo

PRUNE_FILE=/etc/backup.ignorelist               # file con le directory escluse dal backup

LOG_FILE=/var/log/backup.log                    # backup log file

DEL_PREV_MONTH="YES"                            # Imposta la cancellazione del backup completo del mese precedente

#Queste variabili non dovrebbero essere modificate

DOW=`date +%w`                          # Giorno della settimana in numeri e.g. 0->domenica 1->lunedi

DOM=`date +%d`                          # Giorno del Mese e.g. 27

DMS=`date +%B`                          # Mese dell'anno e.g. settembre

DMN=`date +%m`                          # Mese dell'anno e.g. 01

# Il 1° del mese esegue un backup completo del sistema ed elimina il backup completo del mese precedente se DEL_

PREV_MONTH="YES"

# Ogni primo giorno della settimana effettua un backup completo sovrascrivendo quello della settimana precedente

# Il resto dei giorni effettua un backup incrementale, che sovrascrive quello dello stesso giorno della settiman

a precedente

#

# Se NEWER = "", allora tar beckappa tutti i file della cartella indicata

# altrimenti beckappa solo i file piu' recenti di NEWER.

# NEWER prende il valore dal file scritto ogni primo giorno della settimana

#Monto in Scrittura il disco di Backup (decommentare solo se utilizzo una partizione dedicata montata nella cartella di backup)

mount -o remount,rw $BACKUPDIR

# Backup completo del mese

if [ $DOM = "01" ]; then

        echo "`date +%x` `date +%X` - Inizio Backup completo del mese..."

        tar -czpf $BACKUPDIR/$COMPUTER-FULL-$DM.tar.gz $DIRECTORIES --exclude-from=$PRUNE_FILE --absolute-names --totals 2>> $LOG_FILE

        echo "`date +%x` `date +%X` - Backup completo del mese completato!"

        #Eliminazione backup del mese precedente

        if [ $DEL_PREV_MONTH = "YES" ]; then

                if [ $DMN = "01" ]; then

                    PMS="`date -d 15/12 +%B`"

                fi

                if [ $DMN = "02" ]; then

                    PMS="`date -d 15/01 +%B`"

                fi

                if [ $DMN = "03" ]; then

                    PMS="`date -d 15/02 +%B`"

                fi

                if [ $DMN = "04" ]; then

                    PMS="`date -d 15/03 +%B`"

                fi

                if [ $DMN = "05" ]; then

                    PMS="`date -d 15/04 +%B`"

                fi

                if [ $DMN = "06" ]; then

                    PMS="`date -d 15/05 +%B`"

                fi

                if [ $DMN = "07" ]; then

                    PMS="`date -d 15/06 +%B`"

                fi

                if [ $DMN = "08" ]; then

                    PMS="`date -d 15/07 +%B`"

                fi

                if [ $DMN = "09" ]; then

                    PMS="`date -d 15/08 +%B`"

                fi

                if [ $DMN = "10" ]; then

                    PMS="`date -d 15/09 +%B`"

                fi

                if [ $DMN = "11" ]; then

                    PMS="`date -d 15/10 +%B`"

                fi

                if [ $DMN = "12" ]; then

                    PMS="`date -d 15/11 +%B`"

                fi

                rm $BACKUPDIR/$COMPUTER-FULL-$PMS.tar.gz

                echo "`date +%x` `date +%X` - Eliminazione backup completo del mese precedente ($PMS) completata!"

        fi

fi

# Backup completo della settimana

if [ $DOW = 1 ]; then

        NOW=`date +%x`

        # Aggiorna la data dell'ultimo backup completo

        echo "`date +%x` `date +%X` - Inizio Backup COMPLETO della settimana..."

        tar -czpf $BACKUPDIR/$COMPUTER-DAY-$DOW.tar.gz $DIRECTORIES --exclude-from=$PRUNE_FILE --absolute-names

--totals 2>> $LOG_FILE

        echo $NOW > $TIMEDIR/$COMPUTER-full-date

        echo "`date +%x` `date +%X` - Backup COMPLETO della settimana completato!"

# Crea un backup incrementale - sovrascrive l'ultima settimana

else

        # Prende la data dell'ultimo backup completo

        NEWER="--newer `cat $TIMEDIR/$COMPUTER-full-date`"

        echo "`date +%x` `date +%X` - Inizio Backup INCREMENTALE del giorno..."

        tar $NEWER -czpf $BACKUPDIR/$COMPUTER-DAY-$DOW.tar.gz $DIRECTORIES --exclude-from=$PRUNE_FILE --absolute-names --totals 2>> $LOG_FILE

        echo "`date +%x` `date +%X` - Backup INCREMENTALE del giorno completato!"

fi

#Monto in Sola Lettura il disco di Backup (decommentare solo se utilizzo una partizione dedicata montata nella cartella di backup)

mount -o remount,ro $BACKUPDIR

```

N.B.

Purtroppo non è l'ultima versione che ho in produzione, però credo possa ritenersi altrettanto valida (controlla soprattutto cosa restituisce come output il comando date, a volte su alcuni pc usa il formato inglese.

Dacci un'occhiata e sentiti libero di fare tutti gli aggiustamenti del caso    :Wink: 

----------

## Flonaldo

Grazie 1000 Guerro, mi è servito molto! non ho utilizzato proprio il tuo ma mi sono limitato a prendere lo spunto che mi ha fatto risolvere il problema!

----------

## guerro

Figurati   :Wink:   :Wink: 

E' sempre un piacere aiutare quando si può   :Laughing: 

----------

## idonda

mi daresti una dettagliata spiegazione di cosa hai fatto e come?

----------

