Forum: PC-Programmierung Von Python aus Daten auf einen USB-Stick schreiben (Linux Raspberry Pi)


von Sven (Gast)


Lesenswert?

Hallo,

ich habe ein Messgerät gebaut, dass für die GUI und Messdatenauswertung 
einen Raspberry Pi mit Touchscreen verwendet. Nun würde ich gerne die 
Messergebnisse auf einen USB Stick speichern können. Das ganze soll von 
der GUI aus passieren können.

Ich habe mittlerweile gelesen, dass es usbmount gibt und dies 
automatisch einen Stick mounten kann, sobald er eingesteckt wird. Aber 
was passiert dann, nachdem ich die Datei geschrieben habe? Muss ich den 
Stick unmounten, damit die Daten auch sicher auf dem Stick sind oder 
gibt es irgendwelche Konfigurationen, die jegliches Caches für den Stick 
abschalten?

von Thorsten Legat (Gast)


Lesenswert?

umount ist dein freund.

von Sven (Gast)


Lesenswert?

Braucht umount nicht root rechte?

von Julius J. (joe_joule)


Lesenswert?

Sven schrieb:
> Braucht umount nicht root rechte?

Ja, arbeitest du nicht als root auf dem Pi?

Als mountoptionen bieten sich "sync" bzw. "flush" an, die dafür sorgen 
dass Daten sofort geschrieben werden. Aber woher weißt du, dass nicht 
gerade geschrieben wird wenn der Stick herausgezogen wird?

Ich würde ein kleines Script schreiben welches den Stick mountet, die 
Daten schreibt, den Stick unmountet und anschließend anzeigt dass dieser 
entfernt werden kann.

von Sven (Gast)


Lesenswert?

Schreiben kann ja nur ich gerade mit meiner Software auf den Stick. 
Jemand anders ist da ja nicht. Darum hätte ich halt in der Software 
gemeldet, wenn die fertig ist mit dem Schreiben.

Aber wirklich unmounten ist wohl die sauberste Lösung.

PS: Nein, die Python Software läuft nicht als root

von Julius J. (joe_joule)


Lesenswert?

Dann sollte der USB Stick mit der Option "user" in  /etc/fstab 
eingetragen sein, damit auch der normale Benutzer mount und umount 
nutzen darf.

von Sven (Gast)


Lesenswert?

Vielen Dank für diesen Hinweis!

Dann werde ich es so machen.

von Sheeva P. (sheevaplug)


Lesenswert?

Sven schrieb:
> Ich habe mittlerweile gelesen, dass es usbmount gibt und dies
> automatisch einen Stick mounten kann, sobald er eingesteckt wird. Aber
> was passiert dann, nachdem ich die Datei geschrieben habe? Muss ich den
> Stick unmounten, damit die Daten auch sicher auf dem Stick sind oder
> gibt es irgendwelche Konfigurationen, die jegliches Caches für den Stick
> abschalten?

Wenn Du den Stick abziehen möchtest, dann solltest Du ihn unmounten. 
Wenn der Stick eingesteckt bleiben soll, reicht es, den Systembefehl 
fsync(2) für Deine Datei aufzurufen. Unter Python wird der Befehl in 
os.fsync angeboten, auf ein Python-file() f wird das dann mit 
os.fsync(f.fileno()) aufgerufen.

Das Mounten und Unmounten kann übrigens auch ein leider in Vergessenheit 
geratenes Programm namens automounter bzw. autofs durchführen. Das 
mountet den USB-Stick beim Zugriff auf den konfigurierten Mountpoint und 
unmountet ihn wieder, wenn für eine bestimmte Zeit kein Zugriff mehr 
stattgefunden hat.

von Sheeva P. (sheevaplug)


Lesenswert?

Sven schrieb:
> Braucht umount nicht root rechte?

Das hängt von den Mountoptionen des betreffenden Dateisystems ab. Und 
wer ein Programm als User mit root-Rechten ausführen möchte, dann das 
explizit mit der NOPASSWD-Option für sudo freischalten. Achtung: die 
/etc/sudoers immer mit "visudo" bearbyten, dann wird eine Fehlerprüfung 
gemacht bevor die Datei geschrieben wird; den gewünschten Editor kann 
man dabei über die Umgebungsvariable EDITOR einstellen:
1
sudo EDITOR='emacs -nw' visudo

von Rolf M. (rmagnus)


Lesenswert?

Man könnte auch einfach pmount verwenden. Das ist extra für 
Wechseldatenträger gemacht und braucht keine root-Rechte.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.