Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Dateien auf Server und Client vergleichen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Dateien auf Server und Client vergleichen


 
danibert
28-03-2010, 12:11 
 
Hallo zusammen,

ich möchte einen Vergleich von Dateien realisieren, weiß aber nicht genau, wie ich die Sache lösen kann. Mir geht es momentan nicht um die Umsetzung in einer bestimmten Programmiersprache, sondern um den Vorgang an sich.

Folgendes Szenario:
Ich habe mehrere Dateien auf einem Server und lokal auf einem Client liegen und muss herausfinden, ob die Dateien Auf dem Server und Client identisch sind. Der Name der Dateien spielt keine Rolle - nur der Inhalt soll verglichen werden. Aufgrund der Dateigröße ist es nicht möglich, die Dateien vom Client auf den Server hochzuladen und dort zu vergleichen (oder die umgekehrte Richtung).

Meine Idee ist also, nur Teile der Dateien, wie den Header, Prüfsumme etc. zu vergleichen. Weiter dachte ich an einen Byte-für-Byte-Vergleich von mehr oder weniger zufällig gewählten Ausschnitten der Dateien. Die zu Transferierende Datenmenge soll so gering wie möglich bleiben.

Nehmen wir an, es werden 2 Bitmap-Dateien verglichen, die Dateigröße ist 100 MB und innerhalb der Bilder sind nur wenige Pixel unterschiedlich. Oder eine Textdatei mit einer Million Wörtern und ein einziges Wort unterscheidet sich. So etwas darf natürlich nicht als Datei mit gleichem Inhalt erkannt werden.

Meine Frage ist nun, was muss ich alles vergleichen, um ein sicheres Ergebnis zu bekommen?

Danke schon mal für alle Ideen und Anregungen

 
XGremliN
28-03-2010, 14:03 
 
Hi,

spontan würde ich mach nen Prüfsummenvergleich machen. Damit solltest du die Unterschiede abfangen können.

 
AmicaNoctis
28-03-2010, 14:04 
 
Hallo,

ich würde das über Prüfsummen lösen. Zuerst würde ich die Dateigrößen vergleichen, bei Gleichheit würde ich die MD5-Checksum beider Dateien vergleichen. Wenn die gleich ist, würde ich beide Dateien halbieren und die MD5-Checksums beider Hälften vergleichen, um eine (ohnehin unwahrscheinliche) Kollision auszuschließen. Wenn diese 3 Checksum-Paare jeweils gleich sind, kannst du davon ausgehen, dass der Inhalt beider Dateien Bit für Bit übereinstimmt. Die Wahrscheinlichkeit, in diesem Falle noch daneben zu liegen, beträgt ca. 2.5e-116.

Gruß,

Amica

 
onemorenerd
28-03-2010, 14:07 
 
rsync --dry-run ...?

 
XGremliN
29-03-2010, 00:37 
 
rsync wird wohl nichts werden zwischen Client und Server

 
onemorenerd
29-03-2010, 01:25 
 
Warum nicht?


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:23 Uhr.