- Documentazione ufficiale
- Guide della comunità
- 12.04 LTS

web wiki forum planet
help.ubuntu-it comunità italiana

- Desktop
- Server
- Ricerca

Questa guida non è stata ancora completamente tradotta. Se vuoi contribuire alla sua traduzione contatta il Gruppo Traduzione di Ubuntu-it.
Guida a Ubuntu Server » Backup »
Indietro | Avanti

# Rotazione degli archivi

The shell script in Script shell only allows for seven different archives. For a server whose data doesn't change often, this may be enough. If the server has a large amount of data, a more complex rotation scheme should be used.

- Rotazione degli archivi NFS
- Dispositivi a nastro

## Rotazione degli archivi NFS

In this section, the shell script will be slightly modified to implement a grandfather-father-son rotation scheme (monthly-weekly-daily):

- La rotazione eseguirà un backup giornaliero dalla domenica al venerdì.

- Il sabato, viene eseguito un backup settimanale consentendo di avere così quattro backup settimanali al mese.

- Il backup mensile è eseguito il primo giorno del mese, ruotando due backup mensili se il mese è pari o dispari.

Questo è il nuovo script:

    #!/bin/bash
    ####################################
    #
    # Backup to NFS mount script with
    # grandfather-father-son rotation.
    #
    ####################################

    # What to backup.
    backup_files="/home /var/spool/mail /etc /root /boot /opt"

    # Where to backup to.
    dest="/mnt/backup"

    # Setup variables for the archive filename.
    day=$(date +%A)
    hostname=$(hostname -s)

    # Find which week of the month 1-4 it is.
    day_num=$(date +%d)
    if (( $day_num <= 7 )); then
            week_file="$hostname-week1.tgz"
    elif (( $day_num > 7 && $day_num <= 14 )); then
            week_file="$hostname-week2.tgz"
    elif (( $day_num > 14 && $day_num <= 21 )); then
            week_file="$hostname-week3.tgz"
    elif (( $day_num > 21 && $day_num < 32 )); then
            week_file="$hostname-week4.tgz"
    fi

    # Find if the Month is odd or even.
    month_num=$(date +%m)
    month=$(expr $month_num % 2)
    if [ $month -eq 0 ]; then
            month_file="$hostname-month2.tgz"
    else
            month_file="$hostname-month1.tgz"
    fi

    # Create archive filename.
    if [ $day_num == 1 ]; then
    	archive_file=$month_file
    elif [ $day != "Saturday" ]; then
            archive_file="$hostname-$day.tgz"
    else
    	archive_file=$week_file
    fi

    # Print start status message.
    echo "Backing up $backup_files to $dest/$archive_file"
    date
    echo

    # Backup the files using tar.
    tar czf $dest/$archive_file $backup_files

    # Print end status message.
    echo
    echo "Backup finished"
    date

    # Long listing of files in $dest to check file sizes.
    ls -lh $dest/

Lo script può essere eseguito attraverso gli stessi metodi descritti in Eseguire lo script.

It is good practice to take backup media off-site in case of a disaster. In the shell script example the backup media is another server providing an NFS share. In all likelihood taking the NFS server to another location would not be practical. Depending upon connection speeds it may be an option to copy the archive file over a WAN link to a server in another location.

Another option is to copy the archive file to an external hard drive which can then be taken off-site. Since the price of external hard drives continue to decrease, it may be cost-effective to use two drives for each archive level. This would allow you to have one external drive attached to the backup server and one in another location.

## Dispositivi a nastro

A tape drive attached to the server can be used instead of an NFS share. Using a tape drive simplifies archive rotation, and makes taking the media off-site easier as well.

When using a tape drive, the filename portions of the script aren't needed because the data is sent directly to the tape device. Some commands to manipulate the tape are needed. This is accomplished using mt, a magnetic tape control utility part of the cpio package.

Questo è lo script modificato per l'uso di un dispositivo a nastro:

    #!/bin/bash
    ####################################
    #
    # Backup to tape drive script.
    #
    ####################################

    # What to backup.
    backup_files="/home /var/spool/mail /etc /root /boot /opt"

    # Where to backup to.
    dest="/dev/st0"

    # Print start status message.
    echo "Backing up $backup_files to $dest"
    date
    echo

    # Make sure the tape is rewound.
    mt -f $dest rewind

    # Backup the files using tar.
    tar czf $dest $backup_files

    # Rewind and eject the tape.
    mt -f $dest rewoffl

    # Print end status message.
    echo
    echo "Backup finished"
    date

Il nome del device predefinito per un dispositivo a nastro SCSI è /dev/st0, utilizzare il percorso al device appropriato per il proprio sistema.

Ripristinare i dati da un dispositivo a nastro funziona allo stesso modo di ripristinare da un file. Riavvolgere il nastro e usare il percorso del dispositivo al posto del percorso al file. Per esempio, per ripristinare il file /etc/hosts in /tmp/etc/hosts:

    mt -f /dev/st0 rewind
    tar -xzf /dev/st0 -C /tmp etc/hosts

Indietro | Avanti