Python – FTP-Datei-Timestamp erstellen und mit lokaler Datei vergleichen

Wie ich die Daten von einem FTP-Server mit meinen lokalen Dateien abgleiche.

    Inhaltsangabe
  1. Nötige Libraries
  2. Remote-Datei auslesen
  3. Lokale Datei auslesen
  4. Daten vergleichen
  5. Fazit

Im Zuge meines Backup-Scripts musste ich die Dateien vom FTP-Server mit den Dateien auf dem lokalen System abgleichen und ggf. die Datei vom Server herunterladen.

Im nachfolgenden möchte ich euch einmal die Schritte genauer erklären, damit ihr diese nicht nur kopiert und in eure Scripts einfügt, sondern damit ihr diese auch versteht.

Nötige Libraries

Wir werden ohne Libraries nicht diese Aufgaben erledigen können und deswegen hier direkt die Liste der Libraries die benötigt werden:

  • os
    Dieses Modul die Möglichkeit, betriebssystemabhängige Funktionen zu verwenden.
  • ftplib
    Sie können damit Python-Programme schreiben, die verschiedene automatisierte FTP-Jobs ausführen, z. B. das Spiegeln anderer FTP-Server.
  • time
    Dieses Modul bietet verschiedene zeitbezogene Funktionen.

Remote-Datei auslesen

Ich habe im Vorhinein eine FTP Verbindung mit der ftplib Library aufgebaut und diese Verbindung unter der Variable ftp_obj gespeichert.

Den Pfad zur Datei auf dem Server habe ich als remoteFile deklariert und definiert. Im Nachfolgenden werde ich die Datetime der Datei auslesen und diese dann in ein Timestamp konvertieren:

remote_datetime = ftp_obj.voidcmd("MDTM " + remoteFile)[4:].strip()
remote_timestamp = time.mktime(time.strptime(remote_datetime, '%Y%m%d%H%M%S'))

Der Typ DATETIME wird verwendet, wenn Sie Werte benötigen, die sowohl Datums- als auch Zeitinformationen enthalten. Der unterstützte Bereich ist „1000-01-01 00:00:00“ bis „9999-12-31 23:59:59“.

Der TIMESTAMP-Datentyp hat einen Bereich von „1970-01-01 00:00:01“ ‚UTC bis‘ 2038-01-19 03:14:07 ‚UTC.

MySQL Documentation – 11.3.1 The DATE, DATETIME, and TIMESTAMP Types

Lokale Datei auslesen

Den Pfad zur lokalen Datei habe ich als localFile gespeichert und rufe die Timestamp der letzten Veränderung an der Datei ab:

local_timestamp = os.path.getmtime(localFile)

Diese wird ebenfalls in eine Variable geschrieben, damit wir nachher einen Vergleich der Daten machen können.

Daten vergleichen

Je höher das Datum, desto höher der Timestamp. Deswegen müssen wir einmal die erhaltenen Variablen in Integer und anschließend können wir ermitteln, ob die lokale Datei neuer ist oder nicht.

if int(remote_timestamp) > int(local_timestamp):
    # remote Datei neuer
else:
    # remote Datei nicht neuer

Fazit

Das ist die Methode die ich anwende, um entfernte Timestamps auszulesen. Falls ihr der Meinung seid, dass es besser geht, würde ich euch bitten euch mit mir in Kontakt zu setzen und mir eure Vorstellungen zu schildern. Das wäre echt super!

Themen

ftp Programmieren Python Technik Tipps

Beitrag teilen

WhatsAppen

Folgen Sie uns