Komplette Programmstruktur Vergleichen md5?

V

vanny

Gast
Hier mal das scenario:

ich möchte einen GameLauncher programmieren, der den Spielordner scannt und mit einer Kopie im web vergleicht.
Ziel ist Herauszufinden, ob alle Dateien in allen Unterordnern auch wirklich auf dem gleichen stand sind.
Also kurz ein Up&DownGradeTool incl evtl. repair Funktion.

Frage:
Gibt es einen schnelleren Weg, als ne Checksumme die Dateien zu vegleichen?
Wir reden hier von fast 20 GB.^^ und per FTP jedesmal soviel durchzujagen is mal hart :shock:

Gruß Vanny
 

2AndAHalfBit

Aktives Mitglied
Nabend,

die Checksumme für jede Datei zu vergleichen, ist vielleicht wirklich ein bisschen hart. Vor allem wird es extem lange dauern. Als Optimierung könnte ich mir vorstellen, das du nur das letzte Bearbeitungsdatum der Datei vergleichst (müsste man mal schauen wie das geht). Das ist zwar kein ausreichendes Kriterium, aber dann bräuchtest du nur die Checksumme für die Dateien errechnen, für die sich das Datum geändert hat.

Aber ich hätte eine andere Idee. Mach dir doch eine "Releasedatenbank". Immer wenn du ein Update machst, speicherst du dir die Dateien inklusive der Version in der Datenbank. Dann suchst du dir auf dem Client (also im Remoteverzeichnis) die Dateiversion der neusten Datei und gleichst mit deiner Datenbank ab, welche Dateien sich in darauf folgenden Versionen geändert haben.

Liebe Grüße
 
G

Gast2

Gast
Moin,

mach doch ein PHP-Script was die entsprechenden Daten auf dem Server überprüft

PHP:
<?php

	// erlaubte Verzeichnisse
	$directorys[] = "zips2d";
	// $directorys[] = "zips3d";
	
	// versteckte Dateien
	$hidden[] = "foo.file";
	
	// gefundene Dateien "anmelden"
	$files = array();
	
	
	
	// Pfad auf eines der erlaubten Verzeichnisse setzen
	if (!isset($_GET["directory"]))
	{
		echo "<html><head><title>Kolumbus-Downloadlister - Fantasya-PbEM.de</title></head><body>";
		echo "<font color='red'>Parameter 'directory' nicht angegeben! ([query]?directory=&lt;dir&gt;)</font><br/><br/>";
		echo "verf&uuml;gbare Verzeichnisse:<ul>";
		foreach($directorys as $d)
		{
			echo "<li><a href='?directory=$d'>$d</a></li>";
		}
		echo "</ul></body></html>";
		exit;
	}
	$path = $_GET["directory"];
	$found = false;
	foreach($directorys as $d) if (!strcmp($path, $d)) $found = true;
	if (!$found) exit;
	
	
	
	// Verzeichnis auslesen
	$handle = opendir($path);
	while($file = readdir($handle))
	{
		if (!strncmp($file, ".", 1)) continue;
		$found = false;
		foreach($hidden as $h) if (!strcmp($h, $file)) $found = true;
		if ($found) continue; // keine versteckten Dateien
		
		$files[] = $file;
	}
	closedir($handle);
	
	
	
	// Download oder MD5 auflisten
	if (isset($_GET["file"]))
	{
		$file = $_GET["file"];

		foreach($files as $known)
		{
			if (!strcmp($known, $file))
			{
			    header('Content-Type: application/octet-stream');
			    header("Content-Disposition: attachment; filename=\"$file\"");
			    header("Content-Length: ".filesize($path."/$file"));
			    
			    readfile($path."/$file");
			    
			    exit;
			}
		}
	} else {
		// nur auflisten
		foreach($files as $f)
		{
			$md5 = md5_file($path."/".$f);
			echo "$md5\t$f\n";
		}
	}

besser ist aber diese Datei bei jedem Update zu erzeugen und nur noch auszuliefern ... das überprüfen mittels MD5 von PHP dauert zu lange ... hast Du noch eine hohe Frequentierung, dann geht der Server in die Knie

hand, mogel
 
V

vanny

Gast
@EinEinHalbBit:
also Zeitlich lässt sich da schecht prüfen, da ich halt nich weiss, woher der lokal vorhandene SpielClient stammt, von cd is meist 1.0 und wird dann ein upgrade gebrauchen und direkt per install is dann ein paar versionen zu hoch, also kann es mit der version und dem Zeitpunkt der erstellung weit auseinander klaffen.(leider sonst wärs recht simpel).

@mogel
Da ich in PHP ne Niete bin, werd ich deinen vorschlag mal an die Richtige Adresse Weiterleiten.

...,dass md5 bei der Größe blödsinn wäre, da sind wir uns ja schonmal einig ^^, zumind wenn´s jedesmal auf dem Server stattfindet.

Ich werde mal folgende 2 Ansätze prüfen:

1. Einfach mal stumpf die Dateigröße abgleichen.
2. (und das wohl auch für die md5 Alternative)--einmal die 20gb durchjagen und ne XML generieren, die die fertigen Checksummen hält (bzw. OrdnerStruktur und Dateigrößen -Struktur).
Damit kann ich dann einfach die XML laden und Lokal abtesten, ob und wie was Sinn macht, hängt wohl von den Änderungen ab, das muss ich erstmal testen lassen(in Bezug auf die Größe);

@mogel ich geb Dir n feedback, sobald unser PHPHeini sich das angeschaut hat :p

so loong Vanny
 
V

vanny

Gast
Also die PHP-Leutz sagen das Script is ganz nett, aber leider in Sachen Performance zu auslastend.

(Der Plan ist jetzt, eine XML mit allen nötigen Infos zu erstellen, dann Lokal alles zu vergleichen und dann einfach die im Ergebnis nötigen Dateien runterzuladen und ggF. zu ersetzen)

Ich Danke euch aber trotzdem für Eure Hilfe.

so looong Vanny
 
G

Gast2

Gast
Also die PHP-Leutz sagen das Script is ganz nett, aber leider in Sachen Performance zu auslastend.
ich weis - aber im Moment macht es bei mir was es soll ... auf lokalem Server laufen und mir die nötigen Daten liefern

(Der Plan ist jetzt, eine XML mit allen nötigen Infos zu erstellen, dann Lokal alles zu vergleichen und dann einfach die im Ergebnis nötigen Dateien runterzuladen und ggF. zu ersetzen)
das kommt sowie das eigentliche Projekt "Serienreife" erreicht hat und offiziell verfügbar ist
 
B

bERt0r

Gast
Wieso willst du das gesamte Spieleverzeichnis hashen? Gibts da nicht eine Ausführbare Datei oder zumindest Klasse, der du eine Versionsnummer hinzufügen kannst? Gegebenenfalls kannst du die hashen.
 

Noctarius

Top Contributor
Ich würde eine Kombination machen. Irgendwo die aktuelle Versionsnummer hinterlegen. Auf dem Server ein XML pro Versionsupdate in der die geänderten Dateien aufgeführt sind. Diese dann runterladen und updaten.

Zusätzlich würde ich ein XML mit den aktuellen, vollständigen Clientdatei-Hashes hinterlegen und eine Art "Check-All" Button einbauen, welcher dann wirklich einmal alle Files hashed und überprüft bzw eventuell aktualisiert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Erste Schritte Komplette Liste ausgeben Java Basics - Anfänger-Themen 14
Lord.Djerun (Netbeans) Bei TimeUnit.Seconds,Sleep() hängt sich das komplette Programm auf.. Java Basics - Anfänger-Themen 8
W Komplette Webseite runterladen Java Basics - Anfänger-Themen 6
J Button nimmt das komplette Fenster ein?! Java Basics - Anfänger-Themen 5
S Komplette Rekursion beenden? Java Basics - Anfänger-Themen 2
M Imports einzeln oder direkt komplette Pakete .*? Java Basics - Anfänger-Themen 26
S Simple aber komplette Java Loesung von Emails. Java Basics - Anfänger-Themen 11
S Komplette Objekte in jTable oder nur IDs? Java Basics - Anfänger-Themen 5
0x7F800000 wie pack ich komplette objekte in binäre dateien? Java Basics - Anfänger-Themen 4
S Komplette Datei in Array speichern Java Basics - Anfänger-Themen 10
P Wieso wird der komplette Inhalt im verzeichnis nicht gelösch Java Basics - Anfänger-Themen 5
D komplette Textdatei einlesen Java Basics - Anfänger-Themen 15
S Grundsätzliche Programmstruktur planen Java Basics - Anfänger-Themen 5
S welche Programmstruktur? Java Basics - Anfänger-Themen 8
S Programmstruktur mit Interface problem Java Basics - Anfänger-Themen 3
D Programmstruktur so akzeptabel? Java Basics - Anfänger-Themen 2
G Frage zu Programmstruktur Java Basics - Anfänger-Themen 9
G Programmstruktur, brauche Tipps Java Basics - Anfänger-Themen 9
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
J Array.list vergleichen Java Basics - Anfänger-Themen 1
M 3 Zahlen miteinander vergleichen Java Basics - Anfänger-Themen 18
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
W LocalDate vergleichen mit Equals? Java Basics - Anfänger-Themen 7
S mehrere TreeSets so speichern, dass man sie miteinander vergleichen kann Java Basics - Anfänger-Themen 1
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
O Array mit einem Zeichen vergleichen Java Basics - Anfänger-Themen 1
S String mit Int input vergleichen Java Basics - Anfänger-Themen 5
S Den Minimumberechnen 2 codes vergleichen Java Basics - Anfänger-Themen 4
S Chars vergleichen ohne Betrachtung der Groß und Kleinschreibung Java Basics - Anfänger-Themen 7
S Aktuell beste Methode um zwei Bilder zu vergleichen..? Java Basics - Anfänger-Themen 1
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
districon Vergleichen von Objekten Java Basics - Anfänger-Themen 20
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
M Strings vergleichen Java Basics - Anfänger-Themen 10
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
Stephan_kl Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen Java Basics - Anfänger-Themen 11
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
JaVaN0oB Wörterraten - Falsche Ausgabe, String/Chars vergleichen Java Basics - Anfänger-Themen 2
O String mit Character vergleichen Java Basics - Anfänger-Themen 3
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
N 2D Arrays jedes xy vergleichen Java Basics - Anfänger-Themen 7
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
J zwei String Arrays miteinander vergleichen Java Basics - Anfänger-Themen 18
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
D Vergleichen von Strings Java Basics - Anfänger-Themen 6
M Objekte miteinander vergleichen Java Basics - Anfänger-Themen 18
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
R String vergleichen Java Basics - Anfänger-Themen 59
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
C System.in.read() Boolsche Werte vergleichen Java Basics - Anfänger-Themen 8
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
E Zahlen von einem Array mit zahlen von zweitem Array vergleichen Java Basics - Anfänger-Themen 27
A Suffix vergleichen Java Basics - Anfänger-Themen 2
L Erste Schritte Elemente zwei Schlangen vergleichen Java Basics - Anfänger-Themen 14
PaperHat Objekte in Array vergleichen Java Basics - Anfänger-Themen 9
F Input/Output 2 Textdateien mit einander vergleichen Java Basics - Anfänger-Themen 11
N Zwei Strings mit "==" vergleichen warum TRUE Java Basics - Anfänger-Themen 2
M String vergleichen Java Basics - Anfänger-Themen 5
T Datentypen Kann Java 2 verschiedene Datentypen vergleichen? Java Basics - Anfänger-Themen 2
S Array, Geburtsdatum, Vergleichen Java Basics - Anfänger-Themen 28
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
L Variablen Versionsnummern vergleichen Java Basics - Anfänger-Themen 5
N Methoden int[]'s vergleichen Java Basics - Anfänger-Themen 4
N Methoden HashMap interne Werte miteinander vergleichen Java Basics - Anfänger-Themen 7
T JPasswordFielder vergleichen Java Basics - Anfänger-Themen 16
K Datentypen Einträge zweier Matrizen vergleichen Java Basics - Anfänger-Themen 4
M Objekt mit Hashmap vergleichen Java Basics - Anfänger-Themen 22
S Werte in Liste mit Nachfolger vergleichen Java Basics - Anfänger-Themen 5
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
J Zahlensequenz mit einer anderen Sequenz vergleichen Java Basics - Anfänger-Themen 6
P String größer kleiner gleich vergleichen Java Basics - Anfänger-Themen 6
H Bubblesort-Zwei Integer auf Dekade vergleichen. Java Basics - Anfänger-Themen 6
J Methoden BinaryStrings vergleichen Java Basics - Anfänger-Themen 12
C arrey mit string vergleichen Java Basics - Anfänger-Themen 2
K Methoden Passwort Bestätigungsfeld mit Password vergleichen Java Basics - Anfänger-Themen 7
M Wortteile im String vergleichen Java Basics - Anfänger-Themen 2
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
C Große Zahlen vergleichen Java Basics - Anfänger-Themen 19
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
Korvinus Vergleichen von 2 csv-Dateien Java Basics - Anfänger-Themen 2
K Comparable - Objekte aus Array vergleichen und größtes auswählen Java Basics - Anfänger-Themen 1
G Passwort und Passwort wiederholen in if-Abfrage vergleichen Java Basics - Anfänger-Themen 15
JavaNewbie2.0 String vergleichen Java Basics - Anfänger-Themen 4
M 2 Stellen in einem Array vergleichen und bei übereinstimmen eine davon ersetzen Java Basics - Anfänger-Themen 1
A Methoden Char-Arrays auf aufeinanderfolgende Elemente vergleichen! Java Basics - Anfänger-Themen 7
R Objekte Vergleichen und Sortieren Java Basics - Anfänger-Themen 3
A Werte innerhalb von resultset vergleichen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen


Oben