Dateivergleich FTP Server - Client

Für Fragen von Einsteigern und Programmieranfängern...
Ralph59
Beiträge: 145
Registriert: So 22. Mär 2009, 07:48
OS, Lazarus, FPC: WIN 11 (momentan )
CPU-Target: 64 und 32Bit
Wohnort: Hessen
Kontaktdaten:

Dateivergleich FTP Server - Client

Beitrag von Ralph59 »

Hallo,

leider schreibe ich schon wieder einen Beitrag.

Ich hab da mal ne Frage, wenn ich eine Datei von einem Server auf einen Client oder umgekehrt kopiere, dann wird auf dem jeweiligen Empfänger immer dass aktuelle Systemdatum geschrieben, dass heißt, dass das Datum der Originaldatei nicht mit dem Datum des Empfängers übereinstimmt.
Das jeweilige Datum kann ich natürlich ändern, welches ich auch getestet habe.
Nun zu meinen Fragen.

:?: Um eine sichere Prüfung zu machen, ob eine Datei identisch zwischen dem Client und den Server ist, welche Möglichkeiten habe ich da?

1. Size?
2. Datum (Natürlich nur, wenn ich dieses vorher auf dass selbe Datum angepaßt habe beim kopieren?

:?: Gibt es sonst noch eine sichere Möglichkeit?

Ziel ist es, die Traffic zu minimieren, und dadurch die Geschwindigkeit beim Abgleich zu erhöhen, so dass ich nur die Dateien vergleiche, die tatsächlich unterschiedlich sind.

PS: Ich persönlich halte es nicht für tragisch, wenn ich das Datum beim kopieren anpasse, da dann die kopierte Datei den Datumsstatus hat, wie die Originaldatei.

Mit freundlichem Gruß

Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.

creed steiger
Beiträge: 957
Registriert: Mo 11. Sep 2006, 22:56

Re: Dateivergleich FTP Server - Client

Beitrag von creed steiger »

Ein Textfile mit den md5 Prüfsummen anlegen und vor dem Kopiervorgang vergleichen?

http://www.freepascal.org/docs-html/pac ... dex-3.html

Ralph59
Beiträge: 145
Registriert: So 22. Mär 2009, 07:48
OS, Lazarus, FPC: WIN 11 (momentan )
CPU-Target: 64 und 32Bit
Wohnort: Hessen
Kontaktdaten:

Re: Dateivergleich FTP Server - Client

Beitrag von Ralph59 »

Es tut mir leid,
ich stehe ein wenig auf dem Schlauch. :?:

Prüfsummen von den Informationen, die zu Dateien da sind anlegen, ohne diese zu öffnen (nur FTP Zugang möglich), welche da währen Datum, Größe, Attribute, Besitzer.
Ich möchte 1 mal am Tag auf ca. 100 IP Adressen insgesamt ca 35.000 Dateien in ca 3.000 Verzeichnissen durchsuchen, und Unterschiede feststellen sowie neue oder gelöschte Dateien finden und die Unterschiede in den Dateien anzeigen.
Wenn ich jede Datei downloade um die zu vergleichen, dann benötige ich für den Download alleine ca 15 Stunden
Ich möchte natürlich im Zweifelsfall also evtl unterschiedlich in jedemfall die entsprechende Datei downloaden temporär runterlaaden und vergleichen.


Mit freundlichem Gruß

Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Dateivergleich FTP Server - Client

Beitrag von _X_ »

Mach halt einen Eigenen Server, der dir auf Anfrage die MD5 gibt.

mfg _X_

Ralph59
Beiträge: 145
Registriert: So 22. Mär 2009, 07:48
OS, Lazarus, FPC: WIN 11 (momentan )
CPU-Target: 64 und 32Bit
Wohnort: Hessen
Kontaktdaten:

Re: Dateivergleich FTP Server - Client

Beitrag von Ralph59 »

Aber die MD5 von was?

der kompletten Datei?
oder Name, Datum, Attribute, Besitzer?

Die Anfragen, die ich an die unterschiedlichen Server stellen kann sind leider nur und ausschließlich FTP (die Befehlsvielfalt ist hier sehr begrenzt).

Mit freundlichem Gruß

Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Dateivergleich FTP Server - Client

Beitrag von _X_ »

Die MD5 von der Datei.

Das geht mit dem FTP-Befehl "SITE MD5".
Wie da genau der Syntax ist weiß ich nicht, musst du Googeln.

mfg _X_

Ralph59
Beiträge: 145
Registriert: So 22. Mär 2009, 07:48
OS, Lazarus, FPC: WIN 11 (momentan )
CPU-Target: 64 und 32Bit
Wohnort: Hessen
Kontaktdaten:

Re: Dateivergleich FTP Server - Client

Beitrag von Ralph59 »

Hab ich getan, bin jedoch nicht wirklich fündig geworden.
Mein Testserver unterstützt leider kein SITE MD5, ich werde jeoch morgen an eine Maschine gehen, und mal testen, was die Maschine unterstützt.

Befehl: SITE help
Antwort: 214-The following SITE commands are recognized (* =>'s unimplemented)
Antwort: The following SITE extensions are recognized:
Antwort: RATIO -- show all ratios in effect
Antwort: HELP
Antwort: CHGRP
Antwort: CHMOD

Folgende SITE Befehle habe ich beim Googeln gefunden
    setcos, chgid, chgrp, chmod, chown (valid only for "root" account), chuid, stage, wait, symlink



Aber noch einmal, mir geht es nur darum, einen schnellen Vergeich zu haben, ob die Dateien auf dem Server gleich sind wie die Dateien auf dem Client, wenn ich Softwaretechnisch denke, dass da Unterschiede sein könnten, dann werde ich einen Vergleich durchführen und auch tiefer hinein steigen müssen.
Ich möche das Server System und auch die Traffic dabei nicht unnötig belasten.

:wink: Wobei dass mit dem SITE MD5 schon seinen Reiz hat, da dieses auf dem Server laufen würde und zum Mindest keine Traffic verursachen würde.

Danke für Deinen Denkanstoß

Mit freundlichem Gruß

Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Dateivergleich FTP Server - Client

Beitrag von mschnell »

_X_ hat geschrieben:Mach halt einen Eigenen Server, der dir auf Anfrage die MD5 gibt.mfg _X_


Wir haben genau so ein Programm zum FTP-Upload gemacht (läuft in Windows und Linux).

- Man kann "Projekte" anlegen die jeweils ein FTP-Directory, ein lokales Directory und diverse Optionen definieren.
- ein "compare" Knopf vergleicht die FTP und die lokalen Dateien
- ein "upload"-Knopf überschreibt die nicht identischen Dateien uf dem FTP-Server.
- Windows und Linux verwenden sie gleiche Datei, die die Projekte definiert (Umwandlung der "/" in "\", andere Root Definition etc.)
- ganz brauchbare grafische Oberfläche
- Parameter-gesteuerte "Automatik-Funktion zur Verwendung mit "cron" als Erweiterung geplant.

Der Dateivergleich ist reichlich kompliziert und verläuft in etwa so:

Es wird eine Datei "~~DIR~~" mit Datei-Spezifikationen angelegt (Größe, lokales Datum, md5). Dabei wird die MD5 von der lokalen Datei berechnet). Diese Datei spiegelt den Zustand der Dateien auf FTP wieder, wird also nur nach Upload geschrieben.

- Wenn eine Datei in FTP nicht existiert: Upload
- Wenn eine Datei in ~~DIR~~ und lokal dasselbe Datum und dieselbe Größe hat: kein Update
- Wenn eine Datei in ~~DIR~~ und lokal nicht dasselbe Datum und dieselbe Größe hat: MD5 von FTP berechnen und Update wenn unterschiedlich
- Wenn eine Datei lokal nicht existiert aber auf FTP: löschen

(da gibt es noch ein paar Fälle mehr...)

SITE MD5 kannten wir nicht und so machen wir den MD5 der FTP-Datei durch downloaden (das geht ja meist viel schneller als uploaden).
Kann jeder ernsthafte FTP-Server "SITE MD5" ?

Wir haben für die MD5-Berechnung LNET erweitert. Vielleciht wäre ja eine Erweiterung mit "SITE MD5" sinnvoll.

Gruß,
-Michael

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Dateivergleich FTP Server - Client

Beitrag von _X_ »

mschnell hat geschrieben:Kann jeder ernsthafte FTP-Server "SITE MD5" ?
Leider nicht.

Ist euer Client Opensource?

mfg _X_

edit://
Die Info mit SITE MD5 habe ich von dort -> http://www.ftpgetter.com/de/ftp-automatic-upload-download.php
http://www.ftpgetter.com/de/ftp-automatic-upload-download.php hat geschrieben:Nach MD5-Hash (SITE MD5). Falls diese Option aktiviert ist, wird die MD5-Hash der Quell- und Zieldateien verglichen. Falls MD5-Hash nicht ubereinstimmt, wird die Aufgaben-Durchfuhrung fortgesetzt, ansonsten wird die nachste Aufgabe in dem Ablauf ausgefuhrt. Benutzerdefinierter MD5-Befehl. Ihr FTP-Server kann einen anderen Befehl, außer "SITE MD5", benutzen, um MD5-Hash abzufragen. Z.B., benutzt der FTP-Server der Borland-Gesellschaft (ftp.borland.com) den Befehl "SITE SHOHASH". Um zu bestimmen, welcher Befehl Ihr FTP-Server nutzt, nutzen Sie bitte den Befehl "SITE HELP" im FTP Explorer oder kontaktieren Sie Ihren Server-Administrator.
Könnte euch helfen.

Ralph59
Beiträge: 145
Registriert: So 22. Mär 2009, 07:48
OS, Lazarus, FPC: WIN 11 (momentan )
CPU-Target: 64 und 32Bit
Wohnort: Hessen
Kontaktdaten:

Re: Dateivergleich FTP Server - Client

Beitrag von Ralph59 »

Dass waren schon sehr gute Anregungen :wink:

Interresant finde ich, dass Ihr erst Datum und Größe vergleicht, und dann auf MD5 geht.
In meinem Fall sind die Dateien immer recht klein, so dass ich bei einem reinen Vergleich nicht viel Zeit verliere (wenn ich nicht jede Datei vergleiche) da ich eh ein Protokoll erstellen muß, wo die Unterschiede Liegen Zeile... Unterschied.
Auch werde ich eine Art Versionsverwaltung verwenden müssen, so dass jede Änderung eingeplegt werden muß.

Ich frage mich nur, wie habt Ihr das gelöst, dass bei einem Upload oder einem Download nicht das Systemdatum bei der neu geschriebenen Datei aktualisiert wird. In meinem Fall sind die Dateien alleine durch den Upload oder Download im Datum unterschiedlich.

Eine Anpassung des Datums habe ich dann immer mit

Code: Alles auswählen

filesetdate('Ort\Datei',
    DateTimeToFileDate(newDateTime));


durchgeführt, damit Datum und Zeit vor und nach dem Downloade gleich ist.

PS: _X_ Die Seite, von der Du das mit dem SITE MD5 hast, habe ich auch gelesen, danke für den Hinweis :wink:

Mit freundlichem Gruß

Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Dateivergleich FTP Server - Client

Beitrag von Hitman »

Zum synchronisieren von derart vielen Dateien würde ich ernsthaft rsync (oder notfalls unison) empfehlen. Alles andere ist quasi Selbstmord ;-)

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: Dateivergleich FTP Server - Client

Beitrag von _X_ »

Da muss ich zustimmen. Ich verwende RSync

Ralph59
Beiträge: 145
Registriert: So 22. Mär 2009, 07:48
OS, Lazarus, FPC: WIN 11 (momentan )
CPU-Target: 64 und 32Bit
Wohnort: Hessen
Kontaktdaten:

Re: Dateivergleich FTP Server - Client

Beitrag von Ralph59 »

Hallo,

für mich privat nutze ich ncftpget, ein Programm, dass ich unter der Comandozeile durchaus fernsteuern kann.
Dieses verwende ich momentan um einen Server von einem Spiele-Clan mit mehreren Gig's zu synchronisieren, so dass alle immer den gleichen Optionsstand haben. Das funktioniert sehr gut. Aber darum geht es ja nicht.

1. Wenn ich die Logik stehen habe, dann kann das jedes andere Programm auch.
2. Zeigt mir keines dieser Tools an, wenn eine Datei unterschiedlich ist, an welcher Stelle das ist.
3. Wird die Abfrage bei unterschiedlichen Ständen entweder unterbrochen und nachgefragt, oder einfach synchronisiert.

Leider funktionieren so Sachen wie svn nicht via FTP, sonst könnte so etwas durchaus die richtige Alternative sein. Das bin ich auch schon am überlegen,
wenn Dateien unterschiedlich sind, dann darüber einen Div laufen lassen, um mir die Arbeit zu sparen einen guten Dateivergleich zu machen.

Mit freundlichem Gruß

Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Dateivergleich FTP Server - Client

Beitrag von mschnell »

_X_ hat geschrieben:Ist euer Client Opensource?

Klar.
-Michael
Zuletzt geändert von mschnell am Fr 10. Apr 2009, 23:53, insgesamt 1-mal geändert.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Dateivergleich FTP Server - Client

Beitrag von mschnell »

Ralph59 hat geschrieben:Ich frage mich nur, wie habt Ihr das gelöst, dass bei einem Upload oder einem Download nicht das Systemdatum bei der neu geschriebenen Datei aktualisiert wird. In meinem Fall sind die Dateien alleine durch den Upload oder Download im Datum unterschiedlich.

Das File-Datum auf dem FTP server bestimmt der Server und nicht der client. Deshalb kann das Dateidatum dort nicht als kirterium herangezogen werden. Wir vergleichen nur das lokale File-Datum mit dem in der ~~DIR~~ gespeicherten Wert. Wir verwenden aber die Dateigröße auf FTP: wenn sie nicht übereinstimmt auf jeden Fall upload.

-Michael

Antworten