Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Verzeichnissynchronisation: Datum oder CRC als Indikator (https://www.delphipraxis.net/159153-verzeichnissynchronisation-datum-oder-crc-als-indikator.html)

HeikoAdams 16. Mär 2011 12:47


Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Hallo,
wenn ich zwei Verzeichnisse synchronisieren möchte, sollte ich eher das Dateidatum (erstellt/geändert) oder eine CRC als Kriterium heranziehen?

Sir Rufo 16. Mär 2011 12:50

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Hängt davon ab, wie hoch der Anspruch ist.

1. Datum
2. CRC
3. Direkter Vergleich

himitsu 16. Mär 2011 12:54

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
0. Archiv-Attribut

Sir Rufo 16. Mär 2011 12:55

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
-1. Datei-Name :mrgreen:

HeikoAdams 16. Mär 2011 12:56

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Es soll eigentlich nur darum gehen, heraus zu finden, ob sich Datei A in Verzeichnis A von Datei A in Verzeichnis B unterscheidet und somit von Verzeichnis A in Verzeichnis B synchronisiert werden muss.

Sir Rufo 16. Mär 2011 12:59

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Das impliziert der Begriff "synchronisieren".

Aber wie hoch ist der Anspruch an die Synchronisation?
Wenn es extrem 100% zuverlässig sein muss um jeden Preis, dann geht nur der binäre Vergleich der Dateien.

HeikoAdams 16. Mär 2011 13:09

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Es soll schon möglichst exakt und performant sein.

BTW: Stimmt es, das z.B. Truecrypt den Zeitstempel der Container-Dateien nicht ändert? Wenn ja, wäre wohl die Kombination aus Datum + CRC am sinnvollsten :gruebel:

himitsu 16. Mär 2011 13:15

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Permanent = Verzeichnisüberwachung?

Sir Rufo 16. Mär 2011 13:17

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Wenn du den CRC-Wert vergleichst, dann brauchst du das Datum nicht mehr.

Ich würde erst die Dateinamen prüfen (neu, gelöscht), dann bei den gleichen Dateien die Größe und bei gleicher Größe erst den CRC-Wert bilden und vergleichen.

s.h.a.r.k 16. Mär 2011 13:29

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Vielleicht hilft es auch sich rsync näher anzuschauen. Ich weiß nicht, wie das Programm das macht, aber dazu wurde mir immer wieder geraten, wenn es um Synchronisation ging.

Ich persönlich nutze auch Git für sowas :)

HeikoAdams 16. Mär 2011 13:30

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Zitat:

Zitat von Sir Rufo (Beitrag 1088983)
Ich würde erst die Dateinamen prüfen (neu, gelöscht), dann bei den gleichen Dateien die Größe und bei gleicher Größe erst den CRC-Wert bilden und vergleichen.

Ich würde zuerst prüfen, ob die Datei in Verzeichnis B existiert. Wenn ja, würde ich das Datum vergleichen und wenn das Datum identisch ist, die CRC prüfen.

s.h.a.r.k 16. Mär 2011 13:32

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Auf das Datum würde ich mich bei sowas eher weniger verlassen, denn man kann ja eine Datei öffnen und speichern, ohne was daran geändert zu haben. Daher ist dann das Datum aktueller und evtl. gibt es hier dann Probleme.

HeikoAdams 16. Mär 2011 13:36

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Datum ja auch die zusätzliche Prüfung der CRC: Wenn das Datum unterschiedlich ist, wird synchronisiert. Ist das Datum unterschiedlich, wird die CRC geprüft und wenn die sich unterscheidet, ist die Datei geändert und wird synchronisiert.

Und wenn eine Datei gespeichert wurde, ohne etwas zu verändern, gehen ja auch keine Änderungen bei der Synchronisation verloren ;-) Wobei sich mir nicht ganz der Sinn erschließt, warum man eine Datei öffnen und speichern sollte, ohne etwas zu ändern :gruebel:

Sir Rufo 16. Mär 2011 13:46

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Jo, das geht ... obwohl ich die Größe auch noch mit reinnehmen würde.

Soviele (schnelle) Merkmale wie geht prüfen um sich möglichst vor der CRC-Überprüfung zu drücken ;)

HeikoAdams 16. Mär 2011 14:19

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Soll heißen:
Datum prüfen, wenn gleich, die Größe vergleichen und wenn die auch identisch ist, die CRC vergleichen

p80286 16. Mär 2011 17:17

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Den Datumsvergleich würde ich mir schenken, denn erstens gibt es touch und zweitens ein heilloses Durcheinander bei der Beachtung der Zeitzonen und der Anwendung der Sommer/Winterzeit.

Ist die Größe der Datei unterschiedlich, dann sollte auch der Inhalt unterschiedlich sein.
(und was wenn die eine Unicode-Text und die andere ANSI-Text enthält?)

Man könnte auch z.B. die ersten 2000 Byte vergleichen, sind die unterschiedlich sind auch die Dateien unterschiedlich.

Es kommt ganz darauf an ob Du auf Gleichheit oder Ungleichheit prüfen willst.
Gruß
K-H

HeikoAdams 17. Mär 2011 07:35

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Zitat:

Zitat von p80286 (Beitrag 1089068)
Den Datumsvergleich würde ich mir schenken, denn erstens gibt es touch und zweitens ein heilloses Durcheinander bei der Beachtung der Zeitzonen und der Anwendung der Sommer/Winterzeit.

Das Risiko mit den Zeitzonen und Touch gehe ich ein, da die Nutzer der Synchronisation garantiert weder mit touch arbeiten noch in verschiedenen Zeitzonen unterwegs sind ;-) Abgesehen davon sollte das Problem mit den Zeitzonen durch
Delphi-Quellcode:
FileTimeToLocalFileTime
elegant umgangen werden 8-)

Zitat:

Zitat von p80286 (Beitrag 1089068)
Ist die Größe der Datei unterschiedlich, dann sollte auch der Inhalt unterschiedlich sein.

Das sehe ich genau so

Zitat:

Zitat von p80286 (Beitrag 1089068)
(und was wenn die eine Unicode-Text und die andere ANSI-Text enthält?)

Das halte ich für eher unwahrscheinlich, da die Datei in Verzeichnis B ja eine (Sicherungs)Kopie der Datei in Verzeichnis A ist.

Sir Rufo 17. Mär 2011 08:01

AW: Verzeichnissynchronisation: Datum oder CRC als Indikator
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von p80286 (Beitrag 1089068)
Den Datumsvergleich würde ich mir schenken, denn erstens gibt es touch und zweitens ein heilloses Durcheinander bei der Beachtung der Zeitzonen und der Anwendung der Sommer/Winterzeit.

Ist die Größe der Datei unterschiedlich, dann sollte auch der Inhalt unterschiedlich sein.
(und was wenn die eine Unicode-Text und die andere ANSI-Text enthält?)

Man könnte auch z.B. die ersten 2000 Byte vergleichen, sind die unterschiedlich sind auch die Dateien unterschiedlich.

Es kommt ganz darauf an ob Du auf Gleichheit oder Ungleichheit prüfen willst.
Gruß
K-H

Das ist doch alles völlig egal ... denn schlussendlich soll mit der Überprüfung ja nur das Bilden der CRC-Werte möglichst verhindert werden.
Nur wenn alle äußeren Merkmale gleich sind (die Dateien augenscheinlich gleich sind), dann wird per CRC die Gleichheit geprüft.

Anhang 33621


Alle Zeitangaben in WEZ +1. Es ist jetzt 18: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