Hallo in die Community,
ich habe in der Tat vor einiger Zeit eine brauchbare Lösung gefunden, die bei mir mittlerweile schon sehr lange läuft. Allerdings ist es für unbefleckte vielleicht nicht ganz so einfach…
Zuerst einmal müssen wir zusehen, dass wir einen Eintrag in die "crontab" bekommen. Einige werden jetzt sagen: Moment mal, die Einträge dort drin bleiben ja nicht ewig enthalten! Richtig, auch das hat mich anfangs geärgert. Das liegt daran, dass in der Crontab eine Routine regelmäßig aufgerufen wird, die die eigene Tabelle von nicht zulässigenCronjobs befreit… An sich eine nette Idee, aber blöd, wenn man gerne einen eigenen Cron erstellen möchte. Diese Sicherung seitens WD ist jedoch mit einem kleinen Trick umgehbar, denn es gibt eine Datei, in der die zulässigen Cronjob-Einträge hinterlegt sind! Dort können nun neue Crons hinzugefügt werden, was später von der Routine berücksichtigt wird und somit dauerhaft in der Crontab erhalten bleibt! Diese zulässigen Einträge könnt ihr in /usr/local/config/config.xml
hinzufügen!
Dort tragt ihr im Bereich <crond>
neue gültige Listeneinträge ein:
Zum einen ist dort der Listenbereich <list>
in den ihr einen neuen Namenseintrag hinzufügen müsst:
<name id="">backup</name>
bei id tragt eine cronologisch größere Zahl ein.
Weiterhin müsst ihr weiter unten jeden Listeneintrag nochmal näher erklären, also Zeiten hinzufügen.
<backup>
<item id="1">
3``
<1>0</1>
<2>10</2>
<3>*</3>
<4>*</4>
<5>*</5>
<run>/mnt/HD/HD_a2/backupscript/backup.sh &</run>
</item>
</backup>
Die Zahlen 1-5 geben die Ausführungszeit des Cronjobs an! Weitere Infos dazu findet ihr unter:
https://wiki.ubuntuusers.de/Cron/
Nachdem ihr die Einträge in der config.xml gemacht habt, solltet ihr einmal die NAS neu starten, damit es wirksam wird! Denn auch die xml wird hin und wieder neu geschrieben. Wie das alles genau funktioniert, habe ich nicht durchblickt, aber ein Neustart hilft.
Nun könnt ihr euch ein x-beliebiges Skript für das Backup schreiben und im obigen Pfad ablegen. Beispielsweise könnt ihr mit rsync ein vollständiges Backup erstellen lassen.
Mein Script ist vielleicht etwas “billig” geschrieben, dafür funktioniert es gut! Und es wird automatisch der Mount-Pfad der USB-Festplatte anhand der UID ermittelt.
Hier mein Skript
backup.sh
#!/bin/bash
clear
### Check USB-Backup Device and Mountpoint
echo -e "Find Backup by UUID...\n"
backup_uuid="xxxxxxxxxxxxxxxx"
Die UUID der jeweiligen Platte bekommt ihr mit blkid
heraus!
echo "UUID: "$backup_uuid
backup_dev=$(blkid -l -o device -t UUID="$backup_uuid")
echo "dev: "$backup_dev
backup_mnt=$(df -P | grep $backup_dev | awk '{print $6}')
echo "mnt: "$backup_mnt
backup_path=$backup_mnt"/Backup"
echo -e "\nBackup goes"
echo -e "From:\t\t\t\tTo:\t\t\t\tLog:"
SOURCE1="/mnt/HD/HD_a2/Daten"
TARGET1=$backup_path
LOG1="$TARGET1/LOG/$(date +%F)-Daten.txt"
echo -e $SOURCE1"\t->\t"$TARGET1"\t\t"$LOG1
BAK_DIR="$TARGET1/DelDat/$(date +%F)/"
RSY_OPT="-savPbh --delete --numeric-ids --stats"
MOUNTPOINT=$backup_mnt
### Check USB mount
if [ "$MOUNTPOINT" ]; then
MOUNTED=$(mount | fgrep "$MOUNTPOINT");
fi
### Backup if mounted
if [ -z "$MOUNTPOINT" ] || [ "$MOUNTED" ]; then
### First Backup
eval rsync $RSY_OPT --log-file=\"$LOG1\" --exclude=.* --backup-dir=\"$BAK_DIR\" $SOURCE1 \"$TARGET1\"
###
echo ""
else
echo "USB not mounted! Send Mail..."
#send_gen_mail -m message -s subject -r mail@mail.mail
fi
Wenn ihr das Script vorerst testen wollt, dann kommentiert den rsync-Befehl erstmal aus und startet das Skript in der Console! Es gibt einige Ausgaben, die hilfreich sind!
Nun viel Erfolg beim Basteln! Ich hoffe ich konnte euch etwas helfen!
Wer Verbesserungsvorschläge hat, um mein Skript zu verbessern, gerne unten einen Kommentar hinterlassen!
Gruß
Stephan