String direkt in Datei auf FTP-Server schreiben


#1

Hallo Forum,
ich möchte Text-Daten in eine Datei auf meinem Webspace schreiben. Dazu habe ich bisher den Text-String in eine lokale Datei geschrieben und diese Datei per FTP auf den Server hochgeladen. Meine Frage: Gibt es eine Möglichkeit, aus dem String direkt eine Datei auf dem Server zu erstellen, ohne den Umweg, zunächst eine Datei auf den lokalen Datenträger zu schreiben? Hättet Ihr einen Tip oder ein Stichwort für mich?


#3

Es funktioniert soweit auch ganz gut. Das Ganze findet nur auf einem Raspberry Pi statt und da möchte ich aus Gründen der Lebensdauer der SD-Karte die Schreibzugriffe auf die Karte reduzieren (es sollen tagsüber ca. minütlich Daten geloggt werden, da kommen im Laufe der Zeit ziemlich viele Schreibvorgänge zusammen).


#4

Das geht mittels URLConnection

https://docs.oracle.com/javase/tutorial/networking/urls/readingWriting.html


#6

Wenn man nur die Lebensdauer der SD-Karte erhöhen möchte, dann bietet sich eine RAM-Disk an. Mal nach Raspberry PI und Ram-Disk googeln.

Da kann man dann einen kleinen Bereich des Arbeitsspeichers reservieren und mounten. Dort kann man dann ebenfalls Dateien ablegen und lesen. Ähnlich wie Swap nur umgekehrt. Damit würde man dann nicht mehr auf die SD-Karte zugreifen. Ein kleines Script, dass die RAM-Disk beim starten anlegt und die Pfade entsprechend anpassen reichen dann.
Nach einem Neustart sind die Dateien auf der Ram-Disk des Raspberry PI natürlich weg.

Ansonsten gibt es in Java auch noch diverse Möglichkeiten der Client-Server Kommunikation. Allerdings muss man dann auch entsprechend Software auf dem Server laufen lassen oder auf dem Client das FTP-Protokoll implementieren.


#7

Es muss doch erstmal geklärt werden, was client was server ist! Und von wo was nach wo geschrieben werden soll!

Und das ftp würd ich auch nicht selber machen. Dafür libs, @ionutbaiu . Besonders dann, wenn “FTP über SSL oder FTP over TLS, kurz FTPS” hinzukommt. Wobei das ja auch übertrieben und slow. :frowning: (Wobei natürlich möglich, aber da wurd nich gefragt hier.)

Und dem Pi unterstelle ich, das beim booting viel auf der sd gewurstelt wird.

Und der sd unterstelle ich, dass das einen Apfel und einen Ei kostet.


#8

Was was ist geht doch aus den Posts hervor. Ich gehe mal davon aus, dass der RPI Dateien erzeugt die dann mit einem ftp-Programm an einen Server übermittelt werden, der eben einen FTP-Zugang bereitstellt.

Aber sei es drum, egal ob FTP oder SFTP. Es gibt die Möglichkeit sowas lokal (auf dem RPI) zu mounten. Danach fühlt sich FTP oder SFTP-Verzeichnis, wie das lokale Dateisystem an. Dann kann man mit Java ganz einfach via new File() Dateien erzeugen, schreiben und lesen.


#9

Da du im Java-Unterforum gefragt hast suchst du nach einer Java Lösung.
von https://commons.apache.org/proper/commons-net/ gibts eine Library die dir helfen könnte.

https://commons.apache.org/proper/commons-net/examples/ftp/FTPClientExample.java
Hier gibts auch ein Example wie man es verwendet.


#10

Hallo Ihr alle,
das sind gute Anregungen! An eine RAM-Disk hatte ich schon gedacht, hab es dann aber wegen der etwas höheren Gefahr des Datenverlustes verworfen. URLConnection kannte ich noch nicht. Habe gerade mal da reingeschnuppert. Scheint zu passen - danke für den Hinweis! Auf die Idee, das Remote-Verzeichnis lokal zu mounten, bin ich nicht gekommen, aber das ist eine tolle Idee, das ohne großen Programmieraufwand umzusetzen. Ich glaube, so mach ich’s.
Herzlichen Dank! :slight_smile:

Edit: Ist ja wirklich einfach und funktioniert prima! Z. B. so: https://www.kotori.de/wissen/linux-ftp-verzeichnis-mounten.html