Um mein NAS zusätzlich abzusichern benutze ich eine USB-Fesplatte. Hier ein paar Schritte damit die Sicherung automatisch startet, wenn die Platte angeyteckt wird.

Als erstes muss die Platte über udev erkannt werden. Dafür erstelle ich folgende udev-regel:

cat /etc/udev/rules.d/50-usbbackup.rules

 # UDEV rules to setup automatic backup upon disk insertion
 # You can get the discriminant informations with the following command :
 # udevinfo -a -p $(udevinfo -q path -n /dev/sde)
 # Backup - Rule for the hard disk that will backup video files
 KERNEL=="sd?1", ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="WD ", ATTRS{model}=="5000BEV External", RUN+="/root/auto_backup.sh %k"
 # Backup - You can setup rules for other hard disks here
 #KERNEL=="sd?1", ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="xxxxxxxx", ATTRS{model}=="yyyyyyyy", RUN+="/root/backup-zzzzzz.sh %k"

Damit wird beim Anstecken der Script gestartet und als Parameter dev-Dateiname übergeben.

Problem bei udev, dass der Script nach 60 sekunden automatisch beendet wird, deshalb starte ich in dem script ein weiteren „echten“ backup-script mit hilfe von „at“-Befehl:

cat /root/auto_backup.sh

#!/bin/bash

echo "/root/backup-daten-to-usb.sh $1" | at now

exit 0

Und hier der Script selbst, zum Sichern benutze ich rsync. USB-Festlatte ist mit ext4-Dateisystem formatiert und enthält ein Ordner nemns „Backup“, damit die Sicherung überhaupt anspringt:

cat /root/backup-daten-to-usb.sh

#!/bin/bash
#
#-----------------------------------------------------------------------
#
# Script to backup all needed data upon USB hard disk insertion
# It is called thru UDEV with :
#  - the device name (sda1, ...) given as the first parameter
#
#-----------------------------------------------------------------------

beep

# Log beggining of backup
/usr/bin/logger Backup - Beginning at `date`
# if needed, create the mount directory
if [ ! -d /mnt/backup ] ; then mkdir /mnt/backup ; fi

# if your backup disk is formatted in ext2 or ext3, use following line to mount the backup disk
/bin/mount -t auto /dev/$1 /mnt/backup
# or if your backup disk is formatted in FAT32, use following line to mount the backup disk
#/bin/mount -t vfat -o shortname=mixed,iocharset=utf8 /dev/$1 /mnt/backup

if [ -d /mnt/backup/Backup ]
        then
                # Backup command using RSync
                /usr/bin/logger Backup - Daten

                #/usr/bin/rsync -rtv --del --modify-window=2 /media/daten/daten /mnt/backup
                ####### Configuration ########

                RSYNC=/usr/bin/rsync
                # -n -- simmuliert only
                RSYNC_OPTIONS="-a --del --ignore-errors "
                SOURCE="/media/daten/daten/"
                TARGET="/mnt/backup/Backup/" # Verzeichnis, wohin das Backup geschoben wird
                INCLUDE="/root/backup.include" # Filter für Backup

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

                echo $RSYNC $RSYNC_OPTIONS $SOURCE $TARGET --include-from=$INCLUDE
                $RSYNC $RSYNC_OPTIONS $SOURCE $TARGET --include-from=$INCLUDE


                # force sync of files to disk before unmounting
                /bin/sync

                # unmount the backup disk
                /bin/umount /mnt/backup

                # Log end of backup
                /usr/bin/logger Backup - End at `date`
fi

#
beep -r 3

echo "Sicherung ist fertig. USB-Platte kann ertfernt werden." | mail -s "Sicherung auf USB fertig" Email@adresse.com

Alle Verzeichnisse und Dateien, welche nicht gesichert sollen, werden in einer Datei zusammengestellt (minus zeichen vorne – exclude, + – include):

cat /root/backup.include

- .Trash*
- iso_an_images/*
- Library/*
- programme/*
- rsync/*
- share/*
- Strana*
- slackware/*

Am Ende piepst der Server 3 mal (beep-Befehl) und es wird eine Email verschickt (dafür benutze ich programm ssmtp – ein einfacheres SMTP-Dienst). Jetzt kann Festplatte abgetrennt und sicher aufbewahrt werden.

Share me

Share to Google Buzz
Share to Google Plus
Share to LiveJournal
Share to MyWorld
Share to Odnoklassniki