AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateivergleich über Netzwerk

Ein Thema von Marco Steinebach · begonnen am 27. Jun 2014 · letzter Beitrag vom 28. Jun 2014
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Dateivergleich über Netzwerk

  Alt 27. Jun 2014, 11:22
Wenn es dir nur um den Traffic geht, warum nicht eingebaute Windows-Bordmittel wie "Offline-Dateien"? Das ist doch, meine ich, extra dafür gemacht worden.
OK, das gibt es als Datei-Attribut aber wie wendet man's praktisch an?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#2

AW: Dateivergleich über Netzwerk

  Alt 27. Jun 2014, 13:48
Wie wilst du die Dateien vergleichen?

Grundsätzlich bleibt da ja erstmal nur Dateigröße und eventuell Änderungsdatum.
Und wenn der Traffic gespart werden soll, dann maximal eine parieller Vergleich/Hash des Dateiinhalts (z.B. nur die ersten paar Byte/Kilobyte der Datei).


Alternativ müsste auf der anderen Seite des Netzwerks ebenfalls irgendein Programm laufen, von welches man den Hash der Datei(en) bekommt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#3

AW: Dateivergleich über Netzwerk

  Alt 27. Jun 2014, 15:20
Erzähl man etwas mehr zu der Zielumgebung.
Ab Windows Server 2008 / Windows 7 gibt es dafür sehr cool Lösungen wie Remotedifferenzialkomprimierung oder ab 2008 R2 Branch Cache.

Offline Dateien helfen Dir nicht weiter. Wenn Online, dann werden IMMER die Dateien vom Netzwerkshare geladen. Wenn Offline, dann immer die lokale Kopie. Der Sync erfolgt recht langsam im Hintergrund.

Geändert von jensw_2000 (27. Jun 2014 um 15:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Dateivergleich über Netzwerk

  Alt 27. Jun 2014, 16:02
Die Schlagworte wurden ja schon genannte (Größe, Hash-Werte (z.B. MD5 und SHA1)) um zu erkennen, ob die lokale Datei eine exakte Kopie der Datei auf dem Netzlaufwerk ist.

Problematisch ist aber nun, wie man an die aktuelle Größe und die aktuellen Hash-Werte der Datei auf dem Netzlaufwerk kommt.

Hier führt eigentlich kein Weg daran vorbei auf der Netzwerkressource einen Dienst zu implementieren, der zu einem Dateinamen diese Informationen ermittelt und zurückgibt. Und wenn man schon dabei ist, dann kann der Dienst diese Datei auch gleich mit ausliefern.

Die Anwendung fragt nun nach einer Datei, bekommt vom Server-Dienst die Informationen über Größe und Hash-Werte der Datei auf dem Server. Nun schaut man, ob es im lokalen Cache solch einen Eintrag gibt, der diese Eigenschaften hat (Größe, Hash-Werte). Wenn ja, dann wird diese Datei ausgeliefert, wenn nicht, dann wird die Datei vom Server gelesen, im Cache abgelegt und dann von dort gelesen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
503 Beiträge
 
Delphi 5 Enterprise
 
#5

AW: Dateivergleich über Netzwerk

  Alt 27. Jun 2014, 18:03
Hallo zusammen,
ersteinmal ganz herzlichen Dank für eure Antworten.

Kurz zur Erklärung: Das Programm läuft auf mehreren Rechnern im lokalen Netz, und legt seine Dateien (Daten) auf einem Laufwerk ab. Ich weiß, ich weiß, SQL o.ä. wäre die elegantere Lösung, hab ich aber hier nicht.
d.h., wenn eine der laufenden Instanzen etwas speichert, ändert sich ja das Datum der Datei. Wenn nun irgendein Client, auch der, der gerade gespeichert hat, jetzt prüft, ob seine lokale Kopie mit der Netzwerk-Version übereinstimmt, sollte das ja nicht der Fall sein, weil die beiden Datumswerte unterschiedlich sind - denke ich, oder?
Brauch ich, in diesem Fall, die Hash-Prüfung überhaupt?
Serverseitig läuft ein Programm (wenn's auch kein Dienst ist ), so daß auch die Abfrage bzw. Kommunikation über diesen Weg möglich wäre.
Den Traffik wollte ich minimieren, weil es, greift man über ein VPN auf's Netzwerk zu, dann einfach schneller geht wenn man nur das Datum vergleichen muß, die Dateien sind zwar nicht groß, aber auch 200 KB wollen übertragen werden.

Ich glaube, nach der Lektüre eurer Antworten, muß ich meine Frage präzisieren:
Ich kann mittels
GetFileTime ja wunderschön alle drei Datums-Zeitwerte ermitteln und vergleichen.
Schreibe ich nun die lokale Kopie, muß ich...
welchen der drei Datumswerte, wie, ändern?

Viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: Dateivergleich über Netzwerk

  Alt 27. Jun 2014, 18:42
Wenn nur deine Anwendungen die Originaldatei ändern, und eine Änderung immer über das Datum erkennbar ist, dann reicht das doch (das Prüfen über das Datum).

Ich habe eine Anwendung, die läuft auch 100fach bei einem Kunden sowohl Anwendung als auch Konfigurationsdateien liegen im Netz. Wenn morgens alle Arbeiter die Anwendung im Netz starten würden, wäre das Netz doch ziemlich überlastet. Außerdem ist es dann nicht möglich ein Update einzuspielen. Also habe ich mir eine kleine Batchdatei geschrieben, die lokal ausgeführt wird und genau das macht, was Du vorhast:

1. Kopiere die Dateien aus dem Netz, wenn sie neuer sind als die lokale Kopie
2. Starte die lokale Kopie mit lokaler Konfiguration.

Wenn ich ein Update einspiele oder sich die Config verändert hat, geht eine Mail an alle raus 'Bitte beenden Sie die Anwendung bei Gelegenheit und starten diese dann neu'.

In einem anderen Fall macht das die Anwendung selbst, indem sie 1x pro Minute prüft, ob sich etwas am Datum der Netzanwendung geändert hat ("Huch? Die ist ja neuer als ich"), daraufhin beendet sich die Anwendung (nach Bestätigung durch den Benutzer). Die Batchdatei habe ich um eine dritte Zeile erweitert:

1. Kopiere die Dateien aus dem Netz, wenn sie neuer sind als die lokale Kopie
2. Starte die lokale Kopie mit lokaler Konfiguration.
3. Goto 1

Beenden geht dann: Die Konsole schließen, die die Batchdatei ausführt, danach die Anwendung schließen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Dateivergleich über Netzwerk

  Alt 27. Jun 2014, 20:05
Was passiert denn wenn ein Client Daten ändert?
Wie kommen diese Änderungen an den Server und in welcher Form (nur die Änderung oder die gesamte Datei)?
Sollen die überhaupt an den Server gehen?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#8

AW: Dateivergleich über Netzwerk

  Alt 27. Jun 2014, 21:39
Wenn nur deine Anwendungen die Originaldatei ändern, und eine Änderung immer über das Datum erkennbar ist, dann reicht das doch (das Prüfen über das Datum).
Da nicht verraten wurde, über welches Protokoll die Dateien abgerufen werden, war/ist halt nicht klar, ob und wenn ja wie zuverlässig das Datum ist und ob man das für den Vergleich verwenden kann.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz