lokales Verzeichnis auf USB-Platte (FAT32) synchronisieren

Status
Für weitere Antworten geschlossen.

derniwi

Benutzer
Mitglied seit
17. Okt 2013
Beiträge
276
Punkte für Reaktionen
0
Punkte
16
Hallo,

ich suche eine einfache Lösung, um ein lokales Verzeichnis der DS auf ein an der DS angeschlossenes USB-Laufwerk zu synchronisieren.
Das ganze sollte über das Web-Frontend gestartet werden können.

Ich denke mal, ein rsync wäre da schon hilfreich, dazu könnte ich mir dann ein kleines Skript erstellen, welches diese Aufgabe erledigt.

Wie sieht es aktuell mit einer Shell im DSM aus?

Danke und Gruß
Nils
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Ähm, warum so kompliziert? Und warum Shell, wenn Du das über Webfrontend machen willst?
Für den von Dir genannten Zweck gibt es übrigens direkt den Sicherungsassistenten im DSM, bei dem Du in der GUI alles konfigurieren kannst.
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.709
Punkte für Reaktionen
2.118
Punkte
829
Hab auch im ersten Moment diesen Gedanken gehabt, Frogman. Ich vermute aber, dass Nils mit "lokalem Verzeichnis" nichts auf einem Gemeinsamen Ordner meint sondern ein Linux/DSM-Verzeichnis. In dem Fall ist ein Shellskript mit rsync-Aufrufen ein guter Ansatz. Eine Shell im DSM-Frontend ist mir nicht bekannt, falls das gemeint war. Aber mit putty o.ä. ist das doch schnell erledigt.
 

derniwi

Benutzer
Mitglied seit
17. Okt 2013
Beiträge
276
Punkte für Reaktionen
0
Punkte
16
Nein, ich meinte schon einen freigegebenen Ordner.
Backup habe ich mir auch angeschaut, aber der speichert die Daten in "tieferen" Unterverzeichnisse. Ich möchte aber aus einem bestimmten Unterverzeichnis die komplette Struktur "schön" auf die extene Platte kopieren / synchronisieren.

Also wenn meine Dateien und weiter Verzeichnisse unter "/volume1/daten/verz1/verz2/verz3" abgelegt sind:
/volume1/daten/verz1/verz2/verz3/VerzA/
/volume1/daten/verz1/verz2/verz3/VerzB/
/volume1/daten/verz1/verz2/verz3/VerzC/
/volume1/daten/verz1/verz2/verz3/DateiA
/volume1/daten/verz1/verz2/verz3/DateiB
/volume1/daten/verz1/verz2/verz3/DateiC

dann sollen diese unter
/extusb1/VerzA/
/extusb1/VerzB/
/extusb1/VerzC/
/extusb1/DateiA
/extusb1/DateiB
/extusb1/DateiC
abgelegt werden.

Ich hätte auch CloudStation verwendet, aber das funktioniert nicht lokal... :-(
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.709
Punkte für Reaktionen
2.118
Punkte
829
Da wirst Du dann mit den rsync-Optionen spielen müssen - z.B. mit -R bzw. --relative (use relative path names).
 

stefan_lx

Benutzer
Mitglied seit
09. Okt 2009
Beiträge
2.766
Punkte für Reaktionen
74
Punkte
88
die relativen Pfade braucht man gar nicht... ;)

Rich (BBCode):
rsync --progress --delete -ahvr /volume1/daten/verz1/verz2/verz3 /extusb1/

sollte eigentlich das machen, was derniwi will.. also den Inhalt aus verz3 direkt in /extusb1 ablegen...

Stefan
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.709
Punkte für Reaktionen
2.118
Punkte
829
Cool, danke für die Information. Dann wundert mich nur, warum die normale DSM-Datensicherung nicht genauso agiert. Das sind ja ganz normale Parameter und bei der Quelle auch der komplette Pfad ...
 

derniwi

Benutzer
Mitglied seit
17. Okt 2013
Beiträge
276
Punkte für Reaktionen
0
Punkte
16
Genau so etwas, nur noch die Möglichkeit, das Ganze über das Web-Frontend DSM zu starten. Es gibt da auch ein Paket "Shellinabox", wobei das wohl einen älteren Stand hat. Damit könnte ich eine SSH-Sitzung im Browser verwenden. Der Grund für Web ist halt, dass eigentlich jedes Gerät heutzutage das Web nutzen kann, aber SSH ist nur mit zusätzlichen Tools zu verwenden... (also unter Windows).
 

stefan_lx

Benutzer
Mitglied seit
09. Okt 2009
Beiträge
2.766
Punkte für Reaktionen
74
Punkte
88
du könntest den Aufgabenplaner mißbrauchen... ;)

z.B. in das home des admins eine backup.sh legen
in der Datei steht der Befehl drin: rsync --progress --delete -ahvr /volume1/daten/verz1/verz2/verz3 /extusb1/

Im Aufgabenplaner legst du jetzt einen "Vorgang" mit einem Benutzer an (da du auf FAT32 kopieren willst, gehen die Berechtigungen eh verloren).
Beim Befehl trägst du ein

Rich (BBCode):
sh /volume1/homes/admin/backup.sh

Egal, ob der Job zeitgesteuert ist oder nicht, aus der Übersicht kannst du ihn anklicken und oben auf Starten drücken...

@dil88: in den Verzeichnissen die vom Backup (also rsync) angelegt werden, hat nur root die Berechtigung auf die Dateien, die Berechtigungen werden in gesonderten Dateien gespeichert (@app/@metadata irgendwie in Kombination mit den _Syno_BkpMetadata.db-Dateien, genauer hab ich mir das aber nicht angeschaut), wahrscheinlich werden deswegen die Backups insgesamt so "seltsam" abgelegt. Mit den Schaltern für ACL hab ich noch nicht rumgespielt, vermute aber, dass die diese @* Verzeichnisse und die Metadata-Dateien produzieren...

Stefan
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.709
Punkte für Reaktionen
2.118
Punkte
829
Vielen Dank! *verneig* Das ist wirklich hochinteressant. Wenn ich es richtig verstehe, bedeutet das, dass bei einem Restore aus einer DSM-Datensicherung auch dann die Eigentümer/Gruppen/Rechte wiederhergestellt werden können, wenn nicht ext4 sondern z.B. NTFS als Filesystem auf dem externen Backup-Medium verwendet wird.
 

stefan_lx

Benutzer
Mitglied seit
09. Okt 2009
Beiträge
2.766
Punkte für Reaktionen
74
Punkte
88
hab ich zwar nicht weiter ausprobiert, aber müsste so sein... wenn man auf eine zweite Syno sichert, kennt die die Benutzer ja ebenfalls nicht, beim Restore kommen die Berechtigungen aber wieder...

Stefan
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.709
Punkte für Reaktionen
2.118
Punkte
829
Stimmt, das ist echt clever, wenn auch sicherlich nicht unkompliziert.
 

derniwi

Benutzer
Mitglied seit
17. Okt 2013
Beiträge
276
Punkte für Reaktionen
0
Punkte
16
Hallo,

du könntest den Aufgabenplaner mißbrauchen... ;)

z.B. in das home des admins eine backup.sh legen
in der Datei steht der Befehl drin: rsync --progress --delete -ahvr /volume1/daten/verz1/verz2/verz3 /extusb1/
Danke, das hilft mir wirklich weiter.

Jetzt suche ich noch die passenden rsync-Optionen, damit bereits vorhandene Dateien nicht überschrieben werden. Hierzu reicht mir die Prüfung auf die Dateigröße.
Sprich, alles was in der Quelle liegt, soll ins Ziel kopiert werden, was im Ziel vorhanden ist, soll eigentlich nur dann überschrieben werden, wenn sich die Größe geändert hat (was i.d.R. nicht vorkommen sollte). Der Zeitstempel ist bei FAT32 ja immer etwas problematisch, zumal dann auch Sommer-/Winterzeit einem in die Suppe spucken können.

Theoretisch sollte also ein zweiter Skriptaufruf ohne Änderung in der Quelle relativ schnell durchlaufen.

Ich verwende jetzt diesen Befehl:
rsync --size-only --delete --ignore-existing -ahvr volume1/daten/verz1/verz2/verz3 /extusb1/usbshare/ >>/volume1/daten/rsync.log

aber dauert das ziemlich lange. Verwende ich die File Station und kopiere dort mit "Kopieren - Überspringen", dann geht das in wenigen Sekunden von statten (wie gesagt, wenn nichts zu tun ist).

Gibt es da noch einen passenden rsync-Parameter, den ich übersehen habe?

Gruß
Nils
 

stefan_lx

Benutzer
Mitglied seit
09. Okt 2009
Beiträge
2.766
Punkte für Reaktionen
74
Punkte
88
wenn mich nicht alles täuscht, bewirkt --ignore-exisiting, dass bereits vorhandene Dateien nicht überschrieben werden, auch wenn sie neuer sind..
Mehr als die Optionen, die ich reingeschrieben habe, brauchst du eigentlich nicht.. probier das doch mal ohne die Umleitung in das log, ob das (messbar) schneller ist.. aber wirklich schnell ist rsync nicht, weil ja keine Datenbank existiert, sondern die Dateien verglichen werden... Vielleicht bringt es was, mit compress (-z), whole-file (-W) oder update (-u) rumzuspielen, man weiß ja nicht... Übrigens gibt's fürs Log: --log-file=Datei ;)

Stefan
 

derniwi

Benutzer
Mitglied seit
17. Okt 2013
Beiträge
276
Punkte für Reaktionen
0
Punkte
16
Die Option --log-file hat im ersten Test leider nicht geklappt, hatte da aber noch mehr Optionen, vielleicht lag es auch an etwas anderem.
Ich werde die Tage mal direkt den Befehl über die Shell testen, muss ja nicht immer erst das Skript bearbeiten. ;-)

Was mich halt wundert, ist, dass die File Station den Job in sechs Sekunden erledigt. Und die nutzt doch sicherlich auch keine DB, oder?
Das Skript selbst habe ich jetzt nach ca. 30 Minuten abgebrochen, und laut dem Log war rsync da noch sehr weit am Anfang...

Gruß
Nils
 

stefan_lx

Benutzer
Mitglied seit
09. Okt 2009
Beiträge
2.766
Punkte für Reaktionen
74
Punkte
88
die Filestation vergleicht aber auch nichts, was da ist, ist da und wird nicht überschrieben, alles andere wird kopiert...

Stefan
 

derniwi

Benutzer
Mitglied seit
17. Okt 2013
Beiträge
276
Punkte für Reaktionen
0
Punkte
16
Genau das suche ich für rsync...

Ich möchte damit kein Backup machen, nur einige Dateien auf eine USB-Platte kopieren, um diese mitnehmen zu können. Das reguläre Backup läuft über Time Backup...
 

derniwi

Benutzer
Mitglied seit
17. Okt 2013
Beiträge
276
Punkte für Reaktionen
0
Punkte
16
Hallo,

hat jetzt leider etwas gedauert, aber trotzdem möchte ich eine Rückmeldung geben. es klappt.
Jetzt verwende ich folgendes Skript:
Code:
rsync --size-only --delete --ignore-existing --include=<FILEPATTERN> -ahvr /volume1/<QUELLPFAD>/ /volumeUSB1/usbshare/ >/volume1/<QUELLPFAD>/USBKopie.log
echo Fertig! >>/volume1/<QUELLPFAD>/USBKopie.log

Beim letzten Versuch hatte ich nach dem Quellpfad keinen Schrägstrich, somit hat er dieses Verzeichnis auf der USB-Platte angelegt.

Den letzten Befehl brauche / nutze ich, um zu erkennen, dass das Kopieren beendet wurde.


Nochmals Danke und Gruß
Nils
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.709
Punkte für Reaktionen
2.118
Punkte
829
Sehr schön, danke für die Aufklärung!
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat