Wie zwei SSH-Ordner synchronisieren nach neusten Dateien?

Kunstpixel

Lt. Junior Grade
Registriert
Nov. 2019
Beiträge
291
Hi,

ich habe zwei Verzeichnisse die per SSH erreichbar sind
192.168.178.160/storage/saves
192.168.178.116/storage/saves

Das sind zwei Retro-Handhelds (wie der RG351M) die im Netzwerk hängen. Auf beiden spiele ich und beide erzeugen neue Speicherdateien für unterschiedliche Spiele. Das heißt:

/storage/saves/smw/smw.srm ist dann auf einem der Geräte neuer als auf dem anderen.

Meine Idee: Das muss doch mit rsync und meinem NAS gehen.

Wie kann man das am cleversten umsetzen? Ich will dabei auch was lernen. Also auf cronjob in der Synology App einen Task starten der bei beiden mit rsync guckt, was neu ist? Macht man das so? Wenn ja, welche Parameter nutzt rsync?

Aktuell mache ich mit rsync nur ein Backup eines Handhelds:

rsync -ahW --no-compress --progress root@192.168.178.160:/storage /volume1/cloud/Dropbox/Backups/RG351V/ --delete
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Mordi
Was ich für solche Fälle schon benutzt habe: lsyncd
Vielleicht passt das ja auch bei dir. Sollte bei gängigen Distros auch aus den Repos installierbar sein.
 
Ich habe den Unterschied zu rsync noch nicht verstanden. Und Synology hat keine Distro drauf sondern ist eben DSM von Synology. Da kann ich keine Pakete nachinstallieren. Selbst Python nutze ich dort über Docker.

Aber zwei Verzeichnisse mit einem lokalen Verzeichnis auf Dateiebene nach Aktualität zu synchroniseren ist eine Aufgabe für ein neues Tool? Kann rsync das nicht?

Der Konflikt ist doch:


192.168.178.160/storage/saves/smw/smw.srm // 3 Tage alt
192.168.178.116/storage/saves/smw/smw.srm // 5 Min alt
nas/storage/saves/smw/smw.srm // immer die Neuste

und dann vom NAS die 160 aktualisieren. Also "Synchroniseren". Ich dachte dafür steht das "sync" in rsync.

Cool wäre es, wenn ein Tool merken würde, wenn eine IP im Netzwerk auftaucht und dann automatisch synchronisiert. Also "ah, ich komme auf 160 drauf, dann mache ich mal schnell einen Sync". Und dann "oh, da ist ja was Altes drauf. Das ersetze ich mal".
 
Zuletzt bearbeitet:
Du könntest dir ein kleines Script basteln, welches wie folgend abläuft:
  1. rsync von NAS auf lokales Gerät
  2. Spiel starten
  3. wenn Spiel geschlossen wird, rsync von lokalem Gerät auf NAS
Wenn du in Zukunft dein Spiel spielen möchtest, startest du das einfach über das Script.
 
Es gibt ja leider nicht nur ein Spiel sondern eher 100 darauf die eben manchmal auf dem einen und andere auf dem anderen gespielt werden.

192.168.178.160/storage/saves/smw/smw.srm // 3 Tage alt
192.168.178.116/storage/saves/smw/smw.srm // 5 Min alt
nas/storage/saves/smw/smw.srm // immer die Neuste

192.168.178.160/storage/saves/ff9/ff9.srm // 1 min alt
192.168.178.116/storage/saves/ff9/ff9.srm // 7 Tage alt
nas/storage/saves/smw/smw.srm // immer die Neuste

nun sollen die neusten immer überall verteilt werden. Weil ich eben manchmal auf dem einen und manchmal auf dem anderen bestimmte Titel spiele. So wie eben bei der PS4 oder XBOX. Die machen das über Cloudsave ja auch genau so. Es wird immer der neuste Spielstand auf einer Konsole genommen. Wie ist das flag für rsync für "synchroniere nur die neuste Version auf dem Dreieck NAS, Handheld1, Handheld2. Das muss doch ein lösbares Problem sein, oder?

Ich glaube mein Problem ist der Rückweg, oder? Also wann wird eine Datei überschrieben.
 
Und wenn du überall den gleichen Ordner vom NAS direkt mountest und darin deine Spielstände sicherst? Dann brauchst du dir keine Gedanken über Synchronisation machen.
 
Das können die Handhelds so nicht. Außerdem bin ich ja auch teilweise wirklich mit denen Unterwegs. =) Und was passiert, wenn er speichern will und das laufwerk nicht da ist?
Ergänzung ()

Ich habe nun einfach mal angefangen in dem ich nur die SRM Files nehme. Also die Speicherstände der ROMs wenn man z.B. bei Super Mario World im Spiel speichert:


PowerShell:
rsync -ahWm --update --include '*/' --include="*.srm" --exclude="*" --no-compress --progress root@192.168.178.160:/storage/roms /volume1/cloud/Dropbox/Backups/RG351_SRM/ 
rsync -ahWm --update --include '*/' --include="*.srm" --exclude="*" --no-compress --progress root@192.168.178.116:/storage/roms /volume1/cloud/Dropbox/Backups/RG351_SRM/ 
rsync -ahWm --update --include '*/' --include="*.srm" --exclude="*" --no-compress --progress /volume1/cloud/Dropbox/Backups/RG351_SRM root@192.168.178.116:/storage/roms/  
rsync -ahWm --update --include '*/' --include="*.srm" --exclude="*" --no-compress --progress /volume1/cloud/Dropbox/Backups/RG351_SRM root@192.168.178.160:/storage/roms/
 
Zuletzt bearbeitet:
Mit Synology kenne ich mich nicht aus, daher weiß ich nicht welche Tools man dort ausführen kann.

Wenn da quasi ein Linux drauf läuft und du Programme nachinstallieren kannst, könntest du dir ein Script bauen, welches per nmap dein Netzwerk scannt, und wenn Geräte gefunden werden, auf die du per ssh verbinden kannst, könntest du darauf dann deinen rsync Befehl laufen lassen.
 
Ich kann keine Programm nachinstallieren.

Das hier ist denke ich das, was ich gesucht habe:

echo "################### from V to NAS"
rsync -rumt --include '/' --include="Tetris.srm" --exclude="*" --no-compress --progress root@192.168.178.160:/storage/roms /volume1/cloud/Dropbox/Backups/RG351_SRM
echo "################### from M to NAS"
rsync -rumt --include '/' --include="Tetris.srm" --exclude="*" --no-compress --progress root@192.168.178.116:/storage/roms /volume1/cloud/Dropbox/Backups/RG351_SRM
echo "################### from nas to M"
rsync -rumt --include '/' --include="Tetris.srm" --exclude="*" --no-compress --progress /volume1/cloud/Dropbox/Backups/RG351_SRM/roms/ root@192.168.178.116:/storage/roms
echo "################### from nas to V"
rsync -rumt --include '/' --include="Tetris.srm" --exclude="*" --no-compress --progress /volume1/cloud/Dropbox/Backups/RG351_SRM/roms/ root@192.168.178.160:/storage/roms
 
Zurück
Oben