Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
 

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