Auf einem Linux-Rechner gibt es einige Verzeichnisse, die regelmäßig auf USB-Festplatten gesichert werden sollen. Sobald eine dieser Festplatten angesteckt wird, erkennt das System sie anhand ihres Volume-Labels, sichert die richtigen Daten und schickt eine Zusammenfassung per Email, wenn es fertig ist, damit die USB-Platte wieder abgesteckt werden kann.
Das unten folgende Script funktioniert zusammen mit dem Tool "usbmount" und muss im Verzeichnis /etc/usbmount/mount.d abgelegt werden, z. B. als "03_backup".
Im Script selbst müssen Anpassungen vorgenommen werden:
- in der Variable MAILX_OPT müssen Absender-Email-Adresse, SMTP-Servername, Benutzername und Passwort eingetragen werden
- im mailx-Aufruf gegen Ende des Scripts muss die Email-Adresse des Empfängers eingetragen werden
- in das case-Konstrukt müssen pro Zeile die Volume-Labels der USB-Platten eingetragen werden, zusammen mit den Angaben zu a) welche Dateien sollen synchronisiert werden und b) wie das Zielverzeichnis auf dem USB-Datenträger heisst
Script:
#!/bin/sh # Exit if device or mountpoint is empty. if [ -z "$UM_DEVICE" ]; then echo "UM_DEVICE is empty" exit 1 fi echo "UM_DEVICE: $UM_DEVICE" if [ -z "$UM_MOUNTPOINT" ]; then echo "UM_MOUNTPOINT is empty" exit 2 fi echo "UM_MOUNTPOINT: $UM_MOUNTPOINT" mountpoint -q $UM_MOUNTPOINT || exit 3 # get volume label name UM_LABEL=`blkid -s LABEL -o value $UM_DEVICE` echo "UM_LABEL: $UM_LABEL" RSYNC_OPT="-v -a --no-links --no-perms --no-group --no-owner --no-D --delete" RSYNC_LOG="/tmp/rsync.$UM_LABEL.log" MAILX_OPT="-r Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!' -S smtp='SERVER:25' -S smtp-auth=login -S smtp-auth-user='USER' -S smtp-auth-password='PASSWORD'" RSYNC_SRC= RSYNC_TARGET_DIR= case "$UM_LABEL" in BKP_BACKUP) RSYNC_SRC=/media/data/; RSYNC_TARGET_DIR=data/;; BKP_COMEDY) RSYNC_SRC=/media/video.comedy/; RSYNC_TARGET_DIR=Erwachsene.Spielfilme.Comedy/;; BKP_SERIEN) RSYNC_SRC=/media/video.serien/; RSYNC_TARGET_DIR=Erwachsene.Serien/;; BKP_ERW) RSYNC_SRC=/media/video.erwachsene/; RSYNC_TARGET_DIR=Video.Erwachsene/;; BKP_DRAMA) RSYNC_SRC=/media/video.drama/; RSYNC_TARGET_DIR=Erwachsene.Spielfilme.Drama/;; BKP_KIND_CARTOON) RSYNC_SRC=/media/video.kinder.cartoon/; RSYNC_TARGET_DIR=Video.Kinder.Spielfilme_Cartoon/;; BKP_ACTION) RSYNC_SRC=/media/video.action/; RSYNC_TARGET_DIR=Action/;; BKP_VIDEO_KIND) RSYNC_SRC=/media/video.kinder/; RSYNC_TARGET_DIR=Kinder/;; esac echo "RSYNC_SRC: $RSYNC_SRC" echo "RSYNC_TARGET_DIR: $RSYNC_TARGET_DIR" if [ "$RSYNC_SRC" != "" ]; then rsync $RSYNC_OPT $RSYNC_SRC $UM_MOUNTPOINT/$RSYNC_TARGET_DIR >$RSYNC_LOG 2>&1 umount $UM_MOUNTPOINT mailx $MAILX_OPT -s "$UM_LABEL backup complete" Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! <$RSYNC_LOG fi