# Projektdateien auf einen Raspberry Pi kopieren Das Skript `tools/upload_to_pi.sh` kopiert den gewählten lokalen Ordner per SSH und `rsync` auf **einen** Pi. Ohne `--source` ist das Projektverzeichnis die Quelle. Es löscht keine Dateien auf dem Pi. Die Pi-Adresse, der Benutzer und der Zielpfad sind noch nicht am Gerät geprüft und werden beim Aufruf angegeben. ## Voraussetzungen - Auf dem Laptop: `ssh` und `rsync`. - Auf dem Pi: aktivierter SSH-Zugang und `rsync`. - Der Benutzer muss im Zielpfad schreiben dürfen. - Für den optionalen Autostart: Pi-Software laut `SOFTWARE.md` vorbereiten, insbesondere `.venv` im Zielordner; `sudo` muss auf dem Pi nutzbar sein. - Vor dem ersten Upload den Pi per `ssh BENUTZER@HOST` erreichen und den angezeigten Hostschlüssel anhand des eigenen Geräts prüfen. Bei einem geänderten Hostschlüssel die Ursache klären, nicht die Prüfung abschalten. ## Ablauf `BENUTZER`, `HOST` und `ZIEL` durch die geprüften Werte ersetzen. `ZIEL` muss ein absoluter Pfad ohne Leerzeichen sein. ```bash BENUTZER='BENUTZER' HOST='HOST' ZIEL='/home/BENUTZER/halloween' bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL" bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL" --apply ``` Der erste Aufruf zeigt nur die geplanten Befehle. Der zweite legt den Zielordner an und überträgt die Dateien. Ein anderer Quellordner kann mit `--source /absoluter/pfad` angegeben werden. Anschließend auf dem Pi prüfen: ```bash ssh "$BENUTZER@$HOST" "ls -la '$ZIEL'" ``` Soll die WebUI auf dem Pi nach jedem Neustart automatisch laufen, beim Upload `--install-service` ergänzen: ```bash bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL" --install-service bash tools/upload_to_pi.sh --user "$BENUTZER" --host "$HOST" --remote-dir "$ZIEL" --install-service --apply ``` Der erste Befehl ist wieder nur eine lokale Vorschau. Der zweite überträgt die Dateien, installiert/aktualisiert die systemd-Unit mit `sudo` auf dem Pi und startet den Dienst. Bei späteren Updates startet der Dienst so mit dem neuen Code neu. Er bindet weiterhin nur an `127.0.0.1` des Pi; vom Laptop aus ist der SSH-Tunnel aus `SOFTWARE.md` nötig. Es öffnet sich kein Browserfenster von selbst. Das Skript lässt `.git`, `.venv`, `data`, `preview`, `references`, `__pycache__`, `.env` und übliche Schlüsseldateien aus. So bleiben Laufzeiteinstellungen auf dem Pi und die großen Konzeptdateien lokal. Es synchronisiert vorhandene Dateien, löscht aber keine alten Dateien auf dem Pi. Zugangsdaten und andere Geheimnisse gehören nicht in den Quellordner. Für zwei Pis den Upload mit den jeweils geprüften Zielwerten separat ausführen. Es wurde bisher keine Verbindung zu einem Pi, keine Übertragung und keine Installation der systemd-Unit am Gerät geprüft.