Jak mogę synchronizować pliki między klonowanymi systemami?


1

Uczę dzieci programowania za pomocą Scratch i dajemy każdemu uczniowi Raspberry Pi do użycia. Chcę być w stanie dać im dodatkowe pliki do lekcji w dół drogi (jak nowe obrazy tła lub sprite), ale chcę, aby było tak płynnie, jak to możliwe. Można śmiało powiedzieć, że ich wiedza techniczna jest niska, więc wolałbym, aby usługa w tle robiła to automatycznie.

Używam Syncthing do własnych celów na różnych urządzeniach, więc to była moja pierwsza myśl. Ale aby przygotować każdy Raspberry Pi, po prostu skopiuję ten sam obraz karty SD, który przygotowałem na karcie SD każdego ucznia. Rozumiem, że Syncthing i inne podobne programy wymagają unikalnych identyfikatorów użytkowników dla każdego systemu. Jeśli więc klonuję ten sam system, wszystkie będą miały ten sam identyfikator i domyślam się, że nie będzie działać zgodnie z przeznaczeniem. Ale nie chcę też ręcznie konfigurować Syncthing w kilkunastu systemach.

Czy jest jakiś sposób, aby to ustawić przed klonowaniem systemów i zsynchronizować pliki z mojego systemu do każdego z nich bez żadnej akcji z ich strony? Alternatywnie, jeśli jest jakiś sposób, aby programowo zmienić odpowiednie pliki na obrazie systemu przed napisaniem każdego z nich, to też byłoby dobrze. Dzięki!

Odpowiedzi:


1

Próbowałeś użyć Rsync ? będzie wymagać dostępu do Internetu i serwera, ale jest bardzo łatwy w użyciu w systemie Windows, którego można użyć DeltaCopy

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


Dzięki. Znam rsync i często go używam. Ale, jak już wspomniałem w pytaniu, studenci nie znają się na technologii i nie oczekuję, że będą w stanie samodzielnie uruchamiać takie polecenia. A nauczenie ich, jak wykracza poza zakres tego kursu. Mogłem rsync plików do swoich komputerów z mojego, gdy są w klasie, ale potem musiałbym utworzyć oddzielne nazwy hostów dla każdego systemu po ich zobrazowaniu i śledzić te. Podobnie jak konfiguracja Syncthing w każdym systemie, to jest kłopot, którego wolałbym unikać, jeśli to możliwe.
cbunn

Nie muszą wiedzieć, wystarczy skonfigurować zadanie crona lub utworzyć skrypt basha, który będzie uruchamiał w celu aktualizacji swoich systemów raspberrypi.org/documentation/linux/usage/cron.md
Chico3001

Hmm, to jest pomysł. Jedynym problemem byłoby to, że naprawdę mogę oczekiwać, że uczniowie będą mieli swoje systemy online, kiedy będą w szkole (choć mogą swobodnie korzystać z nich w domu), ale istnieje kilka klas uczniów z różnymi klasami i różnymi nauczycielami (więc różne hosty w różnych sieciach), więc myślę, że może to być trochę skomplikowane. Ale będę o tym pamiętać. Dzięki.
cbunn

Skonfiguruj wspólny serwer, utwórz foldery dla każdej klasy, nadaj każdemu profesorowi uprawnienia R / W i tylko status odczytu dla studentów, możesz nawet narazić go na dostęp do Internetu za pomocą DDNS i otworzyć zaporę, utworzyć zadanie cron do uruchamiania co godzinę, rsync zsynchronizuje tylko ostatnie zmiany dokonane z przypisanym profesorem, możesz także utworzyć skrypt bashowy, który uczeń może uruchomić na początku klasy, innym pomysłem jest użycie konta przechowywania w chmurze, takiego jak onedrive, dropbox lub gdrive
Chico3001

@PimpJuiceIT Uczę ich Zadraśnięcie programowanie, które jest językiem programowania wizualnego. Edytowanie rzeczywistego kodu, uruchamianie skryptów i konfigurowanie zadań cron znacznie wykraczają poza zakres tego, czego chcę się nauczyć. Są to uczniowie szkół podstawowych i będziemy tworzyć proste animowane historie i gry. Jeśli nie znasz Scratcha, powinieneś to sprawdzić.
cbunn

0

Skończyło się na używaniu wget w skrypcie bash, ponieważ mamy serwer WWW, na którym mogę załadować pliki. Chociaż lubię rsync, ładowanie poświadczeń naszego serwera na urządzenia studenckie wydawało się stanowić zagrożenie bezpieczeństwa.

Używam skryptu za pomocą cron, ale za pomocą słowa kluczowego @reboot, tak aby działało ono, gdy uczniowie uruchomią Raspberry Pis, która będzie na początku klasy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.