Kopieren von Ordnern mit Inhalten über den Aufgabenplaner per Skript

  • 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

Ah okay, danke für die Aufklärung.

Aber ich bin der Meinung dass du das mit Syncthing auch gestern bzw. heute Nacht schon selbst hinbekommen hättest.
Das eigentliche Problem an der Sache ist immer, dass man schnell zum Ziel kommen möchte weil man der Meinung ist dass es sich nur um ein paar Klicks handelt.
In der Regel ja auch nicht verkehrt denn wir alle wollen schnellstmöglich zu dem erwünschten Ziel gelangen.
Jedoch verdrängt man hierbei auch gern einmal die wichtigsten Informationen.

Ich habe das ganze einmal auf meiner Seite auf der DSM7 VM nachgestellt.
Das Paket über die SynoCommunity installiert.

Wichtig ! ! !
Während der Installation werden dem Benutzer doch bereits die notwendigen Informationen angezeigt. Aber die Natur des Menschen ist es einfach stur auf "Weiter" und "Fertig" zu klicken nur damit die doofe Installation endlich abgeschlossen ist.
Es sind hier nicht immer nur nervige Disclaimer die angezeigt werden sondern manchmal auch hilfreiche Informationen des Entwickler (bzw. Distributor).

Nur für den Fall dass du dich nicht mehr daran erinnern kannst was dir heute Nacht während der Installation des Pakets Syncthing angezeigt wurde habe ich Screenshots hiervon erstellt.

Das erste Bild ist noch wenig spannend weil man hier zunächst einen Benutzer mit einem Passwort anlegen muss um das WebUI zu schützen.
1775381733985.png

Der nächste Schritt ist aber der, welchen man sich schon genauer anschauen sollte bzw. lesen sollte.
1775381699499.png


Wenn man das befolgt wird es auch keine Rechtsprobleme geben ! ! !

a.) Freigabe-Verzeichnis auf Synology NAS anlegen (in meinem Fall als Beispiel "Temp")
1775381766555.png

b.) Dem internen Systembenutzer "sc-syncthing" Schreibrechte für diese Freigabe erteilen
1775381791349.png

c.) Man legt unter Syncthing ein neuen Ordner mit dem absoluten Systempfad zur Freigabe an (in meinem Beispiel /volume1/Temp)
1775381844748.png


Und siehe da, es gibt keinerlei Berechtigungsprobleme oder Warnungen hierüber. ;)


Nachdem man weitere Geräte verknüpft hat, lässt sich dieser Ordner auch mit einem der anderen Geräte teilen.
Probiere es aus und gib gerne Feedback.
 
  • Like
Reaktionen: shift und JohneDoe
Top, danke @luddi das ist so wirklich aufklärend! Den User sc-syncthing mit den entsprechenden Ordnerrechten habe ich natürlich wie du vermute hast, nicht angelegt und den Text überlesen. Ich probiere es nachher mal aus und berichte.
 
Hier ist die ausführliche Doku der SynoCommunity zu den Berechtigungen zu finden Permission Management.

Noch ein Hinweis zu deinem aktuellen Setup.
Am besten den existierenden Ordner welcher die Probleme in Syncthing zeigt einmal entfernen und neu anlegen. Es klappt nicht wenn man bei einem bereites eingerichteten Syncthing Ordner im Nachhinein die Berechtigungen auf dem NAS ändert. Zumindest war das meine Beobachtung in meinem Versuch.
 
  • Like
Reaktionen: shift
Den User sc-syncthing mit den entsprechenden Ordnerrechten habe ich natürlich wie du vermute hast, nicht angelegt
Achso hier noch der Hinweis dass du den User selbst nicht anlegen musst. Das passiert bereits bei der Installation des Pakets. Du musst lediglich diesem Benutzer die Berechtigungen erteilen.
 
Ach, aber genau das hat er bei der Installation nicht getan, sonst hätte ich das gesehen - habe danach geschaut.
 
Zuletzt bearbeitet von einem Moderator:
Schau dir bitte nochmal das Bild unter diesem Punkt an.
b.) Dem internen Systembenutzer "sc-syncthing" Schreibrechte für diese Freigabe erteilen

Da ist oben aus dem Pull-Down Menü gelb markiert "Interner Systembenutzer". Hast du dort nachgesehen oder nur unter den normalen Benutzern?

Hier ein zusätzlicher Screenshot damit es nochmals klar wird wo man die Systembenutzer findet.
1775391045783.png
 
Oh man, ja da ist der user sc--syncthing. Gut versteckt!
Ich probiere das mal nachher aus.
 
Zuletzt bearbeitet von einem Moderator:
So, habe eben alles eingerichtet - es sieht alles gut aus und Fehlermeldungen gibt es auch keine. Nur, es wird nichts synchronisiert - egal auf welcher Seite ich etwas ablege.

Edit, jetzt klappt es, beim Mac sind es die Documents, nicht die Dokumente....

Nun habe ich die Quall der Wahl, Syncthing oder WebDAV. Kann mich noch überhaupt nicht entscheiden, nur WebDAV lief sofort und war schneller/einfacher einzurichten.
 
Zuletzt bearbeitet:
Beide Geräte sind miteinander verbunden? Wie bist du denn vorgegangen?
Hast du den auf dem NAS erstellten Syncthing Ordner zum teilen mit einem anderen Gerät freigegeben?

Vorgehensweise
a.) Nur einen Ordner auf dem NAS anlegen (bitte kein Verzeichnis auf dem Mac anlegen) ! ! !

b.) Dieses auf dem NAS unter Syncthing erstellten Verzeichnis "teilen" mit dem verknüpften Mac Gerät. Man wählt hier unter "Teilen" eines der verknüpften Geräte aus mit dem dieser Ordner geteilt werden soll.
1775399016827.png

c.) Unter der Syncthing Oberfläche des Mac erscheint sofort der Hinweis dass das Gerät NAS ein Ordner mit dir teilen möchte und man kann dies sofort bestätigen
1775399071077.png

d.) Erst wenn man das Teilen auf dem anderen Gerät (Mac) angenommen hat, wird man aufgefordert den Pfad auf dem Mac anzugeben wo die Dateien gespeichert werden sollen
1775399092870.png

e.) Anschließend sind beide Geräte mit dem Ordner verknüpft und sie sollten sich gegenseitig synchronisieren.

Vermutlich hast du auf beiden Geräten jeweils ein Verzeichnis mit dem gleichen Namen angelegt und wunderst dich weshalb nichts synchronisiert wird.
 
Läuft nun, habe zwar die Ordner auf beiden Seiten manuell angelegt, aber dann so wie du beschrieben hast, vorgegangen. Der Fehler lag in der Ordnerbereichnung Dokumente > Documents.

Auf Mac-Seite wird nach löschen von Dateien ein neuer Ordner angelegt, @eaDir. Wahrscheinlich ist das der Papierkorb oder, wobei der leer ist - auch nach löschen von Dateien?
 
Seit wann bist du denn mit Synology vertraut? Wunder mich dass du bisher noch nichts von diesen Verzeichnissen gehört hast.

Der Ordner @eaDir ist ein versteckter Systemordner, der von Synology NAS (und anderen Geräten mit DSM) automatisch in jedem Verzeichnis angelegt wird. Er enthält Metadaten und Miniaturbilder (Thumbnails) für Fotos, Videos und andere Dateien, die vom System oder von Synology-Apps (wie File Station, Photo Station, Moments) genutzt werden.

Du kannst unter Syncthing auch Ignoriertester angeben. Entweder explizit für jeden Ordner oder sogar als Standard dass diese bei jeder Ordnererstellung übernommen werden (jedoch auch wieder individuell angepasst werden können).

Hier zum Beispiel meine Ignoriermuster
Code:
**/#recycle
/#recycle/
#recycle
@eaDir
(?d).DS_Store
(?d)._.DS_Store
(?d)Thumbs.db

1775400779580.png
 
  • Like
Reaktionen: shift
Naja, habe Synology schon über 6 Jahre im Einsatz, die Ordner @ sind mir bekannt, habe ich aber nie wirklich mit den Ordnern beschäftigt. Ich wundere mich nur, dass der @ Ordner im lokalen Ordner des Macs angelegt wird und nicht im NAS Ordner.
 
Doch der @eaDir Ordner ist auch auf der NAS, sonst würde er nicht auf dein Mac synchronisiert werden.
Dieses @eaDir Verzeichnis wird in der FileStation oder übe SMB nicht angezeigt.

Wenn du aber den Ordnerinhalt über die Konsole anzeigen lässt dann wirst du das Verzeichnis dort auch sehen.

Deshalb wie von mir als Empfehlung in Syncthing die Ingnoriermuster verwenden um all das was man nicht synchronisieren möchte auszuschließen.
Dann werden auf dem Mac keinerlei @eaDir Verzeichnisse angelegt, und auch auf dem NAS keine Mac Typischen .DS_Store Dateien angelegt.
 
Ich habe mal deine Vorgaben in ins Vorgabe-Ignoriermuster eingetragen. Was ich bisher festgestellt habe, Syncthing synchronisiert schneller als WebDAV.

Wobei WebDAV den Vorteil hat, die ganze Synchronisation einzig auf der NAS stattfindet, auch ohne Rechner. Sollte ich unterwegs eine Datei ändern wird die erst beim nächsten Mac Start synchronisiert. Über WebDAV sofort.

Kann man über Syncthing auch Innerhalt der NAS Ordner synchronisieren?
 
Zuletzt bearbeitet:
Ich glaube das mit Syncthing war wohl in die falsche Richtung gedacht da Syncthing eine Synchronisation zwischen zwei lokalen Ordnern nicht offiziell unterstützt.

Aber der Gedanke kam für mich als Alternative auf weil du ins Spiel gebracht hattest ein Verzeichnis vom Mac mit dem NAS synchronisieren zu wollen.
Das eigentliche ursprüngliche Problem war lediglich die Berechtigungen die durch den rsync nicht korrekt gesetzt wurden.

Das kopieren klappt auch und ich selber kann auch auf die Inhalte in volume1/share/xyz/ zugreifen. Nur andere User können nicht auf die Inhalte zugreifen, die sehen nur die Ordnernamen.

Hier scheint es wohl ein Rechtsproblem zu geben

Dein Vorhaben wenn ich es nun korrekt durchleuchtet haben sollte ist wie folgt:

Code:
+-----------------------------+
|    Local Mac Directory      |
|  (via Synology Drive)       |
|  ~/SynologyDrive/xyz        |
+-----------------------------+
             ∧
             |
             |   (bidirectional sync via Synology Drive)
             |
             |
+---------------------------------------------------------------+
|            |           Synology NAS                           |
|            v                                                  |
|   +-------------------------------------------------------+   |
|   |   /volume1/homes/john/cloudzuhause/Dokumente/xyz      |   |
|   +-------------------------------------------------------+   |
|                |                                              |
|                |  (periodic, unidirectional sync,             |
|                |   via script sync-dir-xyz.sh)                |
|                v                                              |
|   +-------------------------------+                           |
|   |     /volume1/share/xyz        |                           |
|   |   (only a sink, not shared    |                           |
|   |    back to Mac or Drive)      |                           |
|   +-------------------------------+                           |
|                                                               |
+---------------------------------------------------------------+


Wenn ja, dann sollte es mit diesem Script (Als Beispiel folgender Name: sync-dir-xyz.sh) funktionieren das zweite Verzeichnis auf dem NAS via rsync zyklisch synchron zu halten.

Und das wird dann geschehen indem du entweder eine Änderung am Mac machst oder direkt auf dem home Verzeichnis im NAS selbst.
Auf die geteilte Freigabe können dann somit auch andere Benutzer zugreifen. Die Berechtigungen sollten nun korrekt gesetzt werden, zumindest klappt dies so in meinem Szenario in der Testumgebung.

Bash:
#!/bin/bash

# ----------------------------------------------------------------------------------------------------------
# Pfad-Variablen definieren
SRC_DIR="/volume1/homes/john/cloudzuhause/Dokumente/xyz"
TARGET_SHARE="/volume1/share"
# Ermittele automatisch den Namen des Quell-Unterordners und setze daraus den Zielpfad zusammen
SRC_BASENAME=$(basename "$SRC_DIR")
TARGET_DIR="$TARGET_SHARE/$SRC_BASENAME"

# ----------------------------------------------------------------------------------------------------------
# Dieses Skript synchronisiert das Verzeichnis $SRC_DIR in das gemeinsame Verzeichnis $TARGET_DIR.
# Es setzt sowohl klassische Linux-Berechtigungen (chmod/chown) als auch Synology-ACLs,
# um die Kompatibilität für alle Zugriffsszenarien (Linux, SMB, NFS, DSM File Station usw.) sicherzustellen.
#
# Warum beides?
# - Klassische Linux-Berechtigungen (chmod/chown) werden von vielen Linux-Tools und NFS verwendet.
# - Synology-ACLs werden von DSM, SMB (Windows-Freigaben) und für erweiterte Rechteverwaltung genutzt.
# - Durch das Setzen beider Methoden ist sichergestellt, dass alle Nutzer – egal wie sie zugreifen –
#   die richtigen Rechte haben.


# Synchronisiere das Verzeichnis $SRC_DIR ins gemeinsame Verzeichnis $TARGET_SHARE (unidirektional, Spiegelung)
rsync -avh --progress --delete "$SRC_DIR" "$TARGET_SHARE/"

# Setze Besitzer und Gruppe für alle Dateien und Ordner in $TARGET_DIR auf root:users
chown -R root:users "$TARGET_DIR"

# Setze die Rechte für alle Verzeichnisse in $TARGET_DIR auf 775 (rwxrwxr-x)
find "$TARGET_DIR" -type d -exec chmod 775 {} \;

# Setze die Rechte für alle Dateien in $TARGET_DIR auf 664 (rw-rw-r--)
find "$TARGET_DIR" -type f -exec chmod 664 {} \;

# Übernehme die ACLs vom übergeordneten Verzeichnis $TARGET_SHARE auf $TARGET_DIR
synoacltool -copy "$TARGET_SHARE" "$TARGET_DIR"

# Übernehme die ACLs rekursiv von $TARGET_SHARE auf alle Dateien und Unterordner in $TARGET_DIR
find "$TARGET_DIR" -exec synoacltool -copy "$TARGET_SHARE" {} \;
 
@luddi Wirklich top von dir, super wie du hier hilfst - ganz großes Kompliment (y)

Du hast meinen case richtig skizziert. Das von dir vorgeschlagene Script möchte ich gleich mal probieren, da werde ich wahrscheinlich auch noch deine Hilfe benötigen. Sollte das klappen, habe ich drei Möglichkeiten ans Ziel zu kommen. Dann habe ich die Qual der Wahl, erst klappt gar nichts, dann auf einmal sind mehrere Möglichkeiten da! Wobei ich annehme, dass rsync die ressourcenschönenste sein sollte, korrigiere mich gerne.

Bei deinem Script werden ja weitreichende Rechte vergeben, die dann ja auch direkt auf das übergeordnete Verzeichnis share Anwendung findet. Nicht das dann auf einmal das gesamte Verzeichnis share offen ist? Habe mal irgendwo gelesen, dass ALC nicht empfohlen wird. ALC ist bei mir auf share auch noch nicht aktiviert.

Wo binde ich das Script ein, in den Aufgabenplaner? Hier wird allerdings eine Zeitplanung vorgenommen, sodass deine Aussage der Echtzeit Synchronisation so nicht laufen kann. Demnach müsste das Script anders eingebunden werden, aber wie?
 
Zuletzt bearbeitet:
  • Like
Reaktionen: ctrlaltdelete
Danke das freut mich 🙌

Du hast daran etwas missverstanden.
Code:
"[...]Rechte vergeben, die dann ja auch direkt auf den übergeordnete Verzeichnis share Anwendung finden[...]"


Du definierst lediglich diese beiden Pfade.
Das Quellverezichnis in diesem Fall das SRC_DIR und die Zielfreigabe (Share) wohin der Ordner aus der Quelle landen soll.
Bash:
# Pfad-Variablen definieren
SRC_DIR="/volume1/homes/john/cloudzuhause/Dokumente/xyz"
TARGET_SHARE="/volume1/share"

Hier wird dann aus dem Quellverzeichnis der letzte Ordner in SRC_BASENAME extrahiert und dem TARGET_SHARE angefügt welches somit dein Zielverzeichnis ergibt.
Bash:
# Ermittele automatisch den Namen des Quell-Unterordners und setze daraus den Zielpfad zusammen
SRC_BASENAME=$(basename "$SRC_DIR")
TARGET_DIR="$TARGET_SHARE/$SRC_BASENAME"

In deinem Fall wäre somit
SRC_DIR --> /volume1/homes/john/cloudzuhause/Dokumente/xyz

und
TARGET_DIR wäre dann /volume1/share/xyz


Wenn du nun genau hinschaust weden die Rechte auf TARGET_DIR angewandt und nicht auf TARGET_SHARE.

ACLs werden bei Synology seit entweder DSM 4.0 oder DSM 5.0 (will mich da nicht festlegen) standardmäßig für Freigaben verwendet.
Somit werden auch hier die ACLs des darüber liegenden TARGET_SHARE auf alle Dateien und Unterverzeichnisse von TARGET_DIR übertragen.

Schau dir das Script bitte nochmals in Ruhe an. Deshalb habe ich auch extra für jeden Befehl ein Kommentar hinterlassen um die Vorgehensweise nachvollziehen zu können.
 
Die Erweiterte Freigabeberechtigung ist bei mir bei keiner Ordnerfreigabe aktiviert - vielleicht weil mein neuen Diskstations immer aus der Sicherung Erstkonfigurtiert habe. Wenn die erweiterte Freigabeberechtigung nun standardmäßig von Synology gesetzt wird, kann ich die ja auch aktivieren.

Zurück auf meine Frage, wo wird das Script eingebunden, im Aufgabenplaner? Wie funktioniert das dann mit der Echtzeit-Syncro, da der Aufgabenplaner feste Vorgaben hat.

Die Kommentartexte im Script sind top, verstehe das Script schon, denke ich. Muss man hier eigentlich noch den Dateidienst rsync aktivieren?
 
Also zu deinen Fragen.

a.) wo wird das Script eingebunden, im Aufgabenplaner
Ja genau im Aufgabenplaner. Damit wird die Aufgabe zu definierten Zeiten ausgeführt.
Denk daran dass das Script so wie ich es zur Verfügung gestellt habe bei dem rsync Befehl die Option --progress verwendete wird.
Wenn du das Script im Hintergrund also über den Aufgabenplaner ausführst empfiehlt es sich die Ausgabe einfach in /dev/null umzuleiten.
Nehmen wir an du hast das Script unter /volume1/scripts/sync-dir-xyz.sh abgelegt dann lautet dein Kommando im Aufgabenplaner wie folgt.
Entweder du setzt das executable flag vorher ein einziges mal oder du machst das im Aufgabenplaner davor.
Bash:
chmod +x /volume1/scripts/sync-dir-xyz.sh
/volume1/scripts/sync-dir-xyz.sh > /dev/null 2>&1

b.) Wie funktioniert das dann mit der Echtzeit-Syncro
Mit dieser Methode überhaupt nicht. Ich zumindest kenne keine Möglichkeit einen Echtzeit-Sync für zwei Verzeichnisse zu konfigurieren. Ich kann mich nicht erinnern dass dies hier bisher jemand behauptet hätte ein Echtzeit-Sync über rsync einrichten zu können.

c.) Muss man hier eigentlich noch den Dateidienst rsync aktivieren
Nein denn rsync ist ein tool das als binary /bin/rsync standardmäßig auf dem System verfügbar ist. Der Dateidienst rsync wird auf dem Synology NAS verwendet wenn man die Diskstation als Ziel über rsync erreichen möchte.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: shift
Zu dem Punkt "Erweiterte Freigabeberechtigung ist bei mir bei keiner Ordnerfreigabe aktiviert" kann ich nur sagen dass das bei mir auch genauso ist.
ACLs werden dennoch beim Anlegen einer Freigabe automatisch angelegt.
D.h. man muss nichts weiter machen und ACL ist standardmäßig aktiviert.

Hier in meinem Beispiel habe ich heute auf der VM (DSM 7) die Freigabe "share" erstellt. Hier sieht man dass eine Konvertierung in ACL nicht möglich ist weil die Freigabe schon nach dem ACL Prinzip angelegt wurde.
Diese Option zur Konvertierung ist nur möglich bei Freigaben die vor einer bestimmten DSM Version angelegt wurden bevor ACL der Standard wurde.


1775426422333.png
 

Additional post fields

 

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