Wie kann ich Dateien zwischen geklonten Systemen synchronisieren?

364
cbunn

Ich lehre Kindern das Programmieren mit Scratch und wir geben jedem Schüler ein Raspberry Pi zur Verwendung. Ich möchte in der Lage sein, ihnen zusätzliche Dateien für Unterrichtsstunden (z. B. neuer Hintergrund oder Sprite-Bilder) zu geben, aber ich möchte, dass sie so nahtlos wie möglich sind. Man kann mit Sicherheit sagen, dass ihr technisches Wissen gering ist. Ich würde es also vorziehen, einen Hintergrunddienst automatisch durchführen zu lassen.

Ich benutze Syncthing für meine eigenen Zwecke geräteübergreifend, daher war dies mein erster Gedanke. Aber um jedes Raspberry Pi vorzubereiten, kopiere ich einfach dasselbe SD-Karten-Image, das ich auf die SD-Karte jedes Schülers vorbereitet habe. Nach meinem Verständnis benötigen Syncthing und andere ähnliche Programme eindeutige Benutzer-IDs für jedes System. Wenn ich also dasselbe System klone, haben sie alle dieselbe ID, und ich schätze, das funktioniert nicht wie beabsichtigt. Ich möchte Syncthing jedoch nicht manuell für ein Dutzend oder mehr Systeme konfigurieren.

Gibt es eine Möglichkeit, dies vor dem Klonen der Systeme einzurichten und Dateien von meinem System mit jedem von ihnen synchronisieren zu lassen, ohne dass sie etwas dagegen unternehmen müssen? Wenn es jedoch eine Möglichkeit gibt, die relevanten Dateien im Systemabbild vor dem Schreiben jeder Datei programmgesteuert zu ändern, wäre dies ebenfalls in Ordnung. Vielen Dank!

1

2 Antworten auf die Frage

1
Chico3001

Haben Sie es mit Rsync versucht ? Es erfordert einen Internetzugang und einen Server, aber es ist sehr einfach zu bedienen. Unter Windows können Sie DeltaCopy verwenden

https://www.thegeekstuff.com/2012/05/rsync-for-windows-deltacopy/?utm_source=tuicool https://www.raspberrypi.org/documentation/remote-access/ssh/rsync.md

Vielen Dank. Ich bin mit rsync vertraut und verwende es häufig. Aber wie ich schon in der Frage erwähnte, sind die Studenten nicht technisch versiert und ich erwarte nicht, dass sie solche Befehle alleine ausführen können. Und ihnen beizubringen, wie es außerhalb dieses Kurses liegt. Ich könnte Dateien von meinen auf meinem Computer rsyncieren, wenn sie im Unterricht sind, aber dann müsste ich nach dem Imaging für jedes System separate Hostnamen erstellen und diese verfolgen. Genauso wie das Einrichten von Syncthing auf jedem System ist dies ein Aufwand, den ich möglichst vermeiden möchte. cbunn vor 6 Jahren 0
Sie müssen es nicht wissen, einfach einen Cron-Job einrichten oder ein Bash-Skript erstellen, das sie ausführen, um ihre Systeme zu aktualisieren: https://www.raspberrypi.org/documentation/linux/usage/cron.md Chico3001 vor 6 Jahren 0
Hmm, das ist eine Idee. Das einzige Problem wäre, dass ich wirklich nur von Schülern erwarten kann, dass ihre Systeme online sind, wenn sie in der Schule sind (obwohl sie frei zu Hause verwendet werden können). Es gibt jedoch mehrere Klassen von Schülern mit unterschiedlichen Unterrichtszeiten und verschiedenen Lehrern (so verschiedene Host-Maschinen in verschiedenen Netzwerken), daher denke ich, dass dies ein bisschen kompliziert werden kann. Aber ich werde es mir merken. Vielen Dank. cbunn vor 6 Jahren 0
Richten Sie einen gemeinsamen Server ein, erstellen Sie Ordner für jede Klasse, erteilen Sie jedem Professor R / W-Berechtigungen und nur den Lesestatus für Studenten. Sie können ihn sogar mit einem DDNS für das Internet verfügbar machen und Ihre Firewall öffnen. Erstellen Sie einen cron-Job, der stündlich ausgeführt wird, rsync Es werden nur die letzten Änderungen des zugewiesenen Professors synchronisiert. Sie können auch ein Bash-Skript erstellen, das der Schüler zu Beginn der Klasse ausführen kann. Eine andere Idee ist die Verwendung eines Cloud-Speicherkontos wie "ondrive", "dropbox" oder "gdrive" Chico3001 vor 6 Jahren 0
@PimpJuiceIT Ich lehre sie _Scratch_-Programmierung, eine visuelle Programmiersprache. Das Bearbeiten von tatsächlichem Code, das Ausführen von Skripts und das Einrichten von cron-Jobs liegen weit außerhalb des Bereichs, den ich lernen möchte. Dies sind Grundschüler, und wir werden einfache animierte Geschichten und Spiele erstellen. Wenn Sie mit Scratch nicht vertraut sind, sollten Sie es überprüfen. cbunn vor 6 Jahren 0
@cbunn Oh, ich verstehe .... lol Pimp Juice IT vor 6 Jahren 0
0
cbunn

Am Ende habe ich wget in einem Bash-Skript verwendet, da wir einen Webserver haben, auf den ich die Dateien laden kann. Obwohl ich Rsync mag, schien das Laden von Anmeldeinformationen für unseren Server auf Schülergeräte ein Sicherheitsrisiko zu sein.

Ich führe das Skript über cron aus, aber mit dem @reboot-Schlüsselwort, damit es jedes Mal ausgeführt wird, wenn die Schüler ihre Himbeer-Pis hochfahren, was sich zu Beginn des Unterrichts befinden würde.