lokales Verzeichnis auf USB-Platte (FAT32) synchronisieren

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

derniwi

Benutzer
Registriert
17. Okt. 2013
Beiträge
279
Reaktionspunkte
1
Punkte
18
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
 
Ä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.
 
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.
 
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... :-(
 
Da wirst Du dann mit den rsync-Optionen spielen müssen - z.B. mit -R bzw. --relative (use relative path names).
 
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
 
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 ...
 
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).
 
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
 
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.
 
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
 
Stimmt, das ist echt clever, wenn auch sicherlich nicht unkompliziert.
 
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
 
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
 
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
 
die Filestation vergleicht aber auch nichts, was da ist, ist da und wird nicht überschrieben, alles andere wird kopiert...

Stefan
 
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...
 
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
 
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