This is the old XigmaNAS forum in read only mode,
it will taken offline by the end of march 2021!



I like to aks Users and Admins to rewrite/take over important post from here into the new fresh main forum!
Its not possible for us to export from here and import it to the main forum!

rsync starten wenn eine USB Festplatte vorhanden ist

German community

Moderators: b0ssman, apollo567, Princo, crowi

Forum rules
Set-Up GuideFAQsForum Rules
Post Reply
Klaus
NewUser
NewUser
Posts: 2
Joined: 28 Aug 2013 11:37
Status: Offline

rsync starten wenn eine USB Festplatte vorhanden ist

Post by Klaus »

Guten Tag Zusammen,
ich bin neu im Forum habe vor ca. einem 3/4 Jahr eine kleine NAS aufgebaut
und bin jetzt bei Version 9.2.01 -Shigawire (Revision 943).
Die Daten auf der NAS speichere ich momentan über meine Netzwerk auf eine USB Festplatte die an einem
Windows PC angesteckt ist.
Da ich das nicht regelmäßig mache (alter Man vergisst schon mal was) denke ich darüber nach
ob sich das automatisieren lässt.
Vielleicht so, USB-Festplatte am Abend anstecken. NAS erkennt die Platte z.B. über die Seriennummer, script mountet die Platte ,startet rsync
und hängt die Platte wieder aus wenn rsysc fertig ist.
Linux bietet mit udev und den .rules Einträgen die Möglichkeit einen script auszuführen wenn ein bestimmtes Laufwerk erkannt wird.
Im NAS4free Handbuch und auf den deutschen FreeBSD Seiten bin ich nicht weiter gekommen.
Am ehesten funktioniert das wohl mit defs. Denke ich.
Nun meine Frage: Gibt es für FreeBSD etwas vergleichbares wie udev oder lässt sich das vielleicht ganz anders lösen.

Vielen Dank für Eure Unterstützung
Klaus

User avatar
Princo
Forum Moderator
Forum Moderator
Posts: 1080
Joined: 15 Jul 2012 01:21
Location: Berlin, Germany
Status: Offline

Re: rsync starten wenn eine USB Festplatte vorhanden ist

Post by Princo »

Und was machst du, falls du aus Versehen etwas auf dem NAS gelöscht hast, und du das von der externen USB-Festplatte zurückholen möchtest?

Erkenntnisgewinn in 3, 2, 1... :mrgreen:

Ansonsten gilt: Nein, du kannst an das NAS keine externen USB-Festplatten anschließen. Das geht bei NAS4Free nicht.
Eine externe Festplatte per eSATA anschließen, das würde gehen.

Grüße
Princo
Meine Antworten beziehen sich immer auf die englischsprachige GUI. ECC-RAM ist Pflicht beim Einsatz von ZFS.

User avatar
crest
Hardware & Software Guru
Hardware & Software Guru
Posts: 538
Joined: 02 Jul 2012 22:25
Location: Vienna, Austria - GMT+1
Status: Offline

Re: rsync starten wenn eine USB Festplatte vorhanden ist

Post by crest »

Hi,
Klaus wrote:...
Da ich das nicht regelmäßig mache (alter Man vergisst schon mal was) denke ich darüber nach
ob sich das automatisieren lässt.
Vielleicht so, USB-Festplatte am Abend anstecken. NAS erkennt die Platte z.B. über die Seriennummer, script mountet die Platte ,startet rsync
und hängt die Platte wieder aus wenn rsysc fertig ist.
...
Ja, das geht, ich selbst mache das schon seit vielen Jahren so. Ich weiß, dass es allgemein nicht empfohlen wird, USB Festplatten am N4F zu verwenden aber rein technisch funktioniert es einwandfrei und zumindest seit FreeBSD 9.1 gibt es auch keine Systemabstürze, wenn man versehentlich eine gemountete USB Platte abschaltet (was ja in jedem Fall nicht günstig ist, weil das Filesystem nicht geschlossen wird - ist mE bei eSATA aber dasselbe Problem).
Klaus wrote:...
Nun meine Frage: Gibt es für FreeBSD etwas vergleichbares wie udev oder lässt sich das vielleicht ganz anders lösen.
...
Ich habe das über ein automount script gelöst, welches auch in der letzten Version meiner Extension für N4F inkludiert ist -> Extended GUI. Wenn du die Extension nicht verwenden möchtest, kann das Script natürlich mit ein paar kleinen Modifikationen auch standalone verwendet werden. Das Script checkt in regelmäßigen Abständen nach neuen, nicht gemounteten USB HDDs und wenn eine neue gefunden wird, wird diese automatisch gemountet (da ich kein eSATA in meinen Systemen habe wäre das generell interessant, das Script dahingehen zu modifizieren - vielleicht könnte sich bei Interesse da mal jemand in dieser Richtung aufmachen !!!). Über die N4F WebGUI bräuchtest du nur einen rsync Job definieren, der zB immer nachts läuft und bei gemounteter USB Platte das Backup durchführt. Nachteil bei dieser einfachsten Lösung ist natürlich, das der Job immer mit einem Fehler beendet wird wenn keine USB Platte im System ist und dass die USB Platte nicht automatisch am Ende eines Backups unmounted wird.

Ich habe daher noch ein eigenes rsync-script geschrieben, dass ich nachts als cron-job laufen lasse und das
1. checkt, ob eine und wenn ja, welche, USB Platte im System ist und
2. bei vorhandener Platte das Backup durchführt, am Ende des Backups die USB Platte unmounted (damit sie dann auch sicher aus dem System entfernt werden kann) und
3. im Falle eines Fehlers während des Backups eine email warnung versendet.
Nachfolgend das Skelett des scripts zur eigenen Verwendung:

Code: Select all

#!/bin/sh
# filename:		rsync_local.sh
# usage:		rsync_local.sh  [--dry-run] [--delete-excluded] [...]
# notes:		the script is expected to stay in /var/scripts and is used in conjunction with Extended GUI extension
# version:		date:		description:
VERSION="x.xx"  # skeleton for rsync backups
#------------- initialize variables ------------
cd `dirname $0`
. CONFIG
INPUT_PARMS="$@"
LOG_FILE=$LOG_DIR/rsync_local_$LOG_DATE.log
LOG_MSG=$SYSTEM_LOG_DIR/rsync_local.log
ERROR_COUNT=0
WARNING_COUNT=0
#------------- functions -----------------------

SAVE_COUNTER ()
{ 
	ERROR_COUNT_OLD=$ERROR_COUNT;   WARNING_COUNT_OLD=$WARNING_COUNT
	ERROR_COUNT=0;   WARNING_COUNT=0
}

RESTORE_COUNTER ()
{ 
	ERROR_COUNT=$ERROR_COUNT_OLD;   WARNING_COUNT=$WARNING_COUNT_OLD
}

RSYNC_ECHO ()
{ logger -p local4.notice "$1"; echo `date +"$DT_STR"` "$1" >> $LOG_MSG; echo "$1" >> $LOG_FILE; }

RSYNC_F ()
{
	echo "`date +"$DT_STR"` $SCRIPT_NAME Backup: $1 ..." >> $LOG_MSG
	echo "Backup: $1 ..." >> $LOG_FILE
	/usr/local/bin/rsync -avi $4 $INPUT_PARMS --log-file=$LOG_FILE --progress --human-readable --iconv=CP1252,CP1252 "$2" "$3"
	if [ $? -eq 0 ]
	then echo "`date +"$DT_STR"` $SCRIPT_NAME Backup: $1 - successfully finished" >> $LOG_MSG
	else echo "`date +"$DT_STR"` $SCRIPT_NAME Backup: $1 - error in execution, see log!" >> $LOG_MSG; ERROR_COUNT=$((ERROR_COUNT+1))
	fi
}

#-----------------------------------------------

LOCK_SCRIPT "WARNING Previous local synchronization still running ... exiting"	# check if another rsync script is still running
RSYNC_ECHO "*** Start of local RSYNC Cron Job - Version $VERSION - options: $INPUT_PARMS"
# some examples for backups from NAS_1 to NAS_2
	RSYNC_F "Backup"	"/mnt/NASXXX1/XXX1/"	"DESTINATION_IP::MODULE_NAME/_XXX1/"					
	RSYNC_F "Video"		"/mnt/NASXXX1/Video/"	"DESTINATION_IP::MODULE_NAME/_Video/"	"--whole-file"	# for big files it's sometimes better to use --wholefile
	RSYNC_F	"....."		"....."					"....."									# ... and another one ...
# USB0750GB: external 750GB USB HDD start --------------------------------------------- # ... and now to a local mounted USB drive
	if [ -e /mnt/USB0750GB/USB0750GB.mounted ]; then									# check if a specific USB (USB0750GB in this case) drive is online
		RSYNC_ECHO "*** RSYNC: Backup to USB drive USB0750GB"
		SAVE_COUNTER
		RSYNC_F "Backup"	"/mnt/NASXXX1/XXX1/"	"/mnt/USB0750GB/_XXX1/"	# do the backup(s) and finally write the results to BACKUP_Datum.txt on the USB drive
		echo "Backupdatum: $LOG_DATE, $0 finished with $WARNING_COUNT warning(s), $ERROR_COUNT error(s)" >> /mnt/USB0750GB/BACKUP_Datum.txt
		umount /mnt/USB0750GB												# unmount the USB drive to let it safely remove
		RESTORE_COUNTER
		RSYNC_ECHO "*** RSYNC: auto umount Backup USB drive USB0750GB"
	else 
		RSYNC_ECHO "*** RSYNC: Backup USB drive USB0750GB is OFFLINE, no backup to USB0750GB ...";
	fi
# USB0750GB: external 750GB USB HDD end -------------------------------------------------------------------------------------------------
RSYNC_ECHO "*** End of local RSYNC Cron Job, finished with $WARNING_COUNT warning(s), $ERROR_COUNT error(s)"	# finish and report and ...
if [ $ERROR_COUNT -gt 0 ]; then $SYSTEM_SCRIPT_DIR/email.sh $HOST"-RSLOC w"$WARNING_COUNT"e"$ERROR_COUNT "$LOG_MSG"; fi	# in case of errors send an email
UNLOCK_SCRIPT

##### --dry-run	... test without actions	--delete-excluded ... delete all in destination what's not in source even if it's in the excluded list
Ich habe versucht, das script so zu dokumentieren, dass es einfach an die eigenen Erfordernisse anzupassen ist. Im wesentlichen sind die Zeilen im unteren Teil des scripts, die mit RSYNC_F beginnen, diejenigen, die die zu sichernden Verzeichnisse angeben. Beispielsweise

Code: Select all

...
RSYNC_F "Backup" "/mnt/NASXXX1/XXX1/"	"DESTINATION_IP::MODULE_NAME/_XXX1/"					
...
wobei jeweils drei Parameter anzugeben sind (immer unter den doppelten Hochkommata):
1. "Backup" ... Name, was gesichert wird
2. "/mnt/NASXXX1/XXX1/" ... Quelle
3. "DESTINATION_IP::MODULE_NAME/_XXX1/" ... Ziel (kann lokal, auf einem andere Server oder eben auf einer USB Platte liegen)

Im Fall einer USB Platte wären dann noch die Zeilen, die für das Beispiel als USB0750GB angegeben sind, auf das eigene System anzupassen.

Wenn du das testen möchtest, würde ich folgende Schritte zur Vorbereitung vorschlagen:
1. Installation der Extension Extended GUI wie unter dem Link oben beschrieben. Unter Tools dort USB Automount aktivieren und Speichern.
2. das beigefügte script an dein System anpassen und in das Extensions scipts Verzeichnis kopieren (in meinem Fall ist das /mnt/DATA/extensions/extended-gui/scripts) und das script mit

Code: Select all

chmod 770 rsync_local.sh
ausführbar zu machen
3. nochmals das Extended GUI installations script mit

Code: Select all

./extended-gui-install.php
aufrufen und Option 2 "Update" ausführen, damit wird das rsync script mit den anderen Extension scripts nach /var/scripts kopiert.
4. Einen cron job definieren, der zB nachts das rsync script laufen lässt, als Kommando gibst du das script, zB

Code: Select all

/var/scripts/rsync_local.sh
ein
5. und dann noch deine USB Platte(n) vorbereiten, d.h. an das NAS anschließen, mit dem Filesystem UFS formatieren (hier empfehle ich wirklich nur UFS zu verwenden, obwohl das auch mit anderen Filesystemen möglich wäre) und dann im Wurzel Verzeichnis dieser Festplatte eine Datei mit einem eindeutigen Namen zu erstellen, damit die Platte nach dem einhängen dann automatisch eindeutig Identifiziert (nach dem Muster zB nnnnnn.mounted - ist auch nochmals etwas ausführlicher in der Extension beschrieben).

Die Benutzung nochmals ganz kurz:
1. USB Platte anschließen -> wird automatisch gemounted
2. nach erfolgtem Backup - die Platte wird im script automatisch unmounted die Platte ausschalten und wegsperren, fertig.

NB: man kann die Platte natürlich auch über die Extended WebGUI (ist auf der Statusseite wie jede andere fix verbaute Platte zu sehen, je nach USB Controller/Platte etc. werden auch SMART Werte, Temperatur usw. abrufbar sein - im Bild die USB1500GB am device da1) händisch auf Knopfdruck un-/remounten, um zB über CIFS direkt zugreifen zu können, beispielsweise um Files/Verzeichnisse wiederherzustellen (siehe Bild).
Image

So, das ist jetzt doch eine ganze Menge zum Verdauen, ich hoffe, es ist trotzdem klar, wenn nicht, jederzeit fragen ... ;)

Wie bereits erwähnt verwende ich das Ganze schon seit vielen Jahren ohne Probleme, natürlich gilt aber wie immer, dass die Verwendung des oben genannten ohne Gewähr und auf eigenes Risiko durchgeführt wird ;)

BG
crest
You do not have the required permissions to view the files attached to this post.
NAS1: 11.2.0.4 - Omnius (Revision 6766) x64-embedded; MSI 760GM-P23; AMD Athlon(tm) II X2 250 7.58GiB RAM
NAS2: 11.2.0.4 - Omnius (Revision 6766) x64-embedded; MSI MS-7369; AMD Sempron(tm) LE-1250 8022MiB RAM
UPS: APC Back-UPS ES 550G
Extensions: OneButtonInstaller, Extended GUI, NextOwnCloud, BitTorrent Sync, Syncthing, Downloady, Midnight Commander, NCDU, MySQL, Rclone, Themes:

Klaus
NewUser
NewUser
Posts: 2
Joined: 28 Aug 2013 11:37
Status: Offline

Re: rsync starten wenn eine USB Festplatte vorhanden ist

Post by Klaus »

Guten Tag,
und vielen Dank für die Antworten.
Zwei Antworten und zwei grundsätzlich verschiedene Meinungen.

Ob das mit USB-Platten unsicher ist weiß ich nicht? Habe ich aber so mit meiner letzte NAS (Synology DS-101) jahrelange praktiziert.
Wenn das Filesystem passt kann man die USB-Platte ja an seinem Arbeitsplatz anstecken und die Dateien einfach wieder übertragen.
Praktisch sind USB-Platten auf jeden Fall. Und preisgünstig.
Hallo crest alle Achtung da hast Du ja richtig vorgelegt!!
leider bin ich zur Zeit zeitlich etwas eng und so wird lesen, verstehen und ausprobieren sicherlich etwas dauern.
Falls ich etwas nicht verstehe würde ich mich wieder melden.
Wenn es läuft natürlich auch.
Also vielen Dank nochmals.
Grüße Klaus

User avatar
Princo
Forum Moderator
Forum Moderator
Posts: 1080
Joined: 15 Jul 2012 01:21
Location: Berlin, Germany
Status: Offline

Re: rsync starten wenn eine USB Festplatte vorhanden ist

Post by Princo »

Klaus wrote:Zwei Antworten und zwei grundsätzlich verschiedene Meinungen.
Ja, und im Prinzip sind sogar beide Antworten richtig.
Klaus wrote:Ob das mit USB-Platten unsicher ist weiß ich nicht? Habe ich aber so mit meiner letzte NAS (Synology DS-101) jahrelange praktiziert.
Eigentlich gibt es gar keine USB-Festplatten. Die Festplatten haben alle einen SATA-Anschluß. Um sie USB-kompatibel zu machen, werden in die Gehäuse USB-ATA-Bridges verbaut, welche die Umsetzung der Signale übernehmen, und den USB-Anschluß bereitstellen.
Die Problematik, welche sich daraus ergibt, kann man hier nachlesen: http://de.wikipedia.org/wiki/Self-Monit ... _Anschluss
Die Quint-Essenz daraus ist, daß die Umsetzung SATA -> USB -> SATA nicht gerade ideal ist, und dazu noch von den verwendeten Chipsätzen und den eingesetzten Betriebssystemen abhängig ist.
Das erklärt auch, warum du das bei deiner Synology so einfach machen konntest. Bei dem Synology-System ist die Hardware bekannt, und das Betriebssystem darauf abgestimmt.
Bei einem NAS4Free-System ist das aber nicht gegeben, da hier eine Vielzahl an unterschiedlichster Hardware zum Einsatz kommt. Nicht jede Hardware wird von NAS4Free vollständig unterstützt. Dabei kann es sogar sein, daß neue N4F-Versionen nicht die gleiche Hardware wie die Vorgängerversionen unterstützt.
Ich erinnere mich an an viele Probleme mit USB-Drives hier im Forum, welche regelmäßig in einem Desaster endeten. Daher habe ich das Thema USB-Drives komplett abgehakt, und kann die Nutzung nicht empfehlen,
Klaus wrote:Wenn das Filesystem passt kann man die USB-Platte ja an seinem Arbeitsplatz anstecken und die Dateien einfach wieder übertragen.
NAS4Free kann UFS und ZFS (bei geeigneter Hardware). ALLE anderen Dateisysteme (EXT, FAT und NTFS) haben hier Alien-Status. Beispiel: viewtopic.php?f=59&t=6662
Das ist nicht ungewöhnlich. Mein allererstes NAS kannte nur XFS als Dateisystem, und hat auch nur dieses Dateisystem auf die extenen Festplatten exportiert.
Für jemanden, der sich damit auskennt, ist das kein Problem.
Was aber ein echtes Problem bei dieser Form des Backups darstellt, ist die Tatsache, das hier immer mit "Berechtigungen" gearbeitet wird. Es kann also sein, daß man sein NAS erfolreich auf eine externe Festplatte exportieren kann, hinterher aber Schwierigkeiten damit hat, auf diese Daten von seinem lokalen Windows-Rechner aus zugreifen zu können, da die Dateien mit dem Rechte-System aus dem NAS "geschützt" sind. Für den Profi ist das kein Problem, aber für den Normal-User kann das richtig frustrierend sein (Lernen durch Schmerz).
Klaus wrote:Praktisch sind USB-Platten auf jeden Fall. Und preisgünstig.
Mein erstes Selbstbau-NAS habe ich mir mit vier USB-Platten aufgebaut, bei denen ich die Platten gewaltsam aus ihren Gehäusen befreit habe, und sie per SATA direkt angeschlossen habe. DIe Platten sind hier immer noch im Einsatz.
USB-Platten mögen praktisch und billig sein, aber als Backup-Medium für ein NAS halte ich sie nicht für besonders gut geeignet.
Einige Punkte dazu habe ich schon angesprochen, aber die Thematik geht noch etwas tiefer.
NAS4Free wurde 2005 entwickelt (damals noch als FreeNAS).
Als internes Dateisystem wurde anfangs UFS eingesetzt.
In der Entwicklung über die Jahre hinweg kam die Unterstützung für ZFS hinzu.
Um ZFS sicher einsetzen zu können, benötigt man allerdings Systeme mit ECC-RAM. Im Prinzip gilt das übrigens auch für den Einsatz von UFS.
In der Zwischenzeit sind die verfügbaren Plattenkapazitäten fast explosionsartig angestiegen,
Für die Verwaltung dieser immensen Kapazitäten ist ZFS als Dateisystem wesentlich besser geeignet, als UFS.
Wenn man mehrere Terabyte Plattenkapazität verwalten möchte, sollte man heutzutage besser ZFS einsetzen (meine Empfehlung).

Grüße
Princo
Meine Antworten beziehen sich immer auf die englischsprachige GUI. ECC-RAM ist Pflicht beim Einsatz von ZFS.

Post Reply

Return to “Deutsch”