FTP - Übertragung einer Textzeile

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
frannek
User
Beiträge: 33
Registriert: Dienstag 28. Januar 2014, 12:17

Hallo Zusammen,

ich habe da eine Frage und bin über jegliche Hinweise oder Lösungsansätze sehr dankbar.


Ich möchte von einem Logger (Raspberry PI) Daten als CSV auf einen externen FTP-Server transportieren.
Problematisch wird es, dass die lokale CSV auf dem Pi mit der Zeit immer mehr wächst (derzeit 1 Zeile pro Minute) und es keinen Sinn macht, eine immer wieder größer werdende CSV Datei komplett neu zu übertragen. Gibt es eine FTP Möglichkeit in der ich die neue Zeile direkt in die Datei auf dem FTP schreibe oder muss ich zwangsläufig immer die komplette Datei vom Pi auf den Server übertragen?

Sollte es nicht möglich sein über FTP nur die aktuelle Zeile in der Serverdatei zu schreiben - wie würdet Ihr dieses Problem lösen?
Als Ansatz hatte ich eine Idee mittels php request (Dazu hatte ich bereits eine Frage im PHP Forum geschrieben), in der dann die Daten an den Server übergeben werden und der Server diese dann ans Ende der CSV anhängt. Hier warte ich auf ein Feedback des PHP Forums. Jedoch finde ich diese Lösung nicht ganz so dolle (Sicherheitsbedenken natürlich)

Danke schon jetzt für eure Hilfe
BlackJack

@frannek: Du kannst mit 'APPE' (anstelle von 'STOR') Daten an eine bestehende Datei anhängen. Du könntest also die Grösse der Datei auf dem FTP-Server abfragen und dann gezielt nur den neuen Teil der Datei übertragen und auf dem Server anhängen.
frannek
User
Beiträge: 33
Registriert: Dienstag 28. Januar 2014, 12:17

Hallo BlackJack,

genau das klingt nach dem, was ich gerne hätte :-)

Irgendwie finde ich jetzt (auf die Schnelle) keine weitreichende Informationen darüber. Mein Code für das versenden ganzer, neuer Dateien schaut so aus:

Code: Alles auswählen


....
       session = FTP(url, user_name, password)
        for file_name in glob(join(ftp_folder, filterx)):
            with open(file_name, "rb") as file_handler:
                session.storbinary("STOR %s" % file_name, file_handler)
        session.quit()
        
....
Funktioniert das Append auch im Binär-Modus? Es klingt jetzt zu einfach als dass ich nur STOR durch APPE ändern muss.
BlackJack

@frannek: 'APPE' funktioniert auch im Binärmodus, allerdings reicht einfach 'STOR' in 'APPE' ändern nicht aus, denn Du musst ja ermitteln wie viel noch übertragen werden muss, also herausfinden wie gross die Datei auf dem Server bereits ist und dann den Dateizeiger beim Sender bis an diese Stelle vorrücken, damit nicht die gesamte Datei noch einmal übertragen und angehängt wird.

Das Du bei PHP Sicherheitsbedenken hast, aber unverschlüsseltes FTP, wo Name und Passwort im Klartext übertragen werden, kein Problem zu sein scheint, ist ein bisschen lustig. ;-)
frannek
User
Beiträge: 33
Registriert: Dienstag 28. Januar 2014, 12:17

Das mit den Bedenken der Sicherheit geht eher auf die Übermittlung falscher Daten in die "Tabelle". Klar ist es nicht so das feine wenn man Daten clear übermittelt...aber besser ein Klartext welches irgendwo abgegriffen werden könnte, als garnichts ;)

Ach sooo.. also muss ich erst noch vergleichen. Misst, da hatte ich jetzt gehofft, dass diese Funktion schon drin ist. Hm... Dann muss ich mal sehen, wo ich ein Beispiel hierfür finde.

Dnake für die Info
BlackJack

@frannek: Falls der Server auf der Gegenseite TLS kann, dann kann man die Verbindung auch verschlüsseln.
Antworten