Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zeitumstellung – Files auf USB-Stick kriegen sie nicht mit, externe Festplatten schon (https://www.delphipraxis.net/209129-zeitumstellung-%96-files-auf-usb-stick-kriegen-sie-nicht-mit-externe-festplatten-schon.html)

Andreas13 30. Okt 2021 18:52

Zeitumstellung – Files auf USB-Stick kriegen sie nicht mit, externe Festplatten schon
 
Hallo Community,
aus aktuellem Anlaß der alljährlichen Zeitumstellung frage ich Euch nach der Lösung folgenden Problems:

Meine geänderten Daten transportiere ich über ein USB-Stick auf meine weiteren PC‘s und externen Festplatten, zwecks Synchronisierung der Datenbestände. Ich verwende dafür einen Batch, der im Wesentlichen mit xcopy arbeitet.
Beispiel:
E: ist das USB-Laufwerk, C: , D: etc. sind logische Laufwerke auf der Festplatte. Auf E: existiert für jedes logische Laufwerk ein Unterverzeichnis z.B. E:\C\, E:\D\ usw.
Mit diesem Befehl kopiere ich die geänderten Daten von D:\ auf dem USB-Stick ins Verzeichnis E:\ D\ und setze gleichzeitig auch die Archiv-Attribute zurück:
Code:
xcopy *.* E:\D\*.* /M /S /Y
Auch zum Einspielen auf die anderen PC’s bzw. externen Festplatten benutze ich xcopy:
Code:
E:\D\*.* D:*.* /s /D /Y
Die zu transportierenden Files verbleiben als zusätzliche Datensicherung auf dem Stick.
Das funktioniert seit Jahrzehnten sehr zuverlässig, aber an einem Wochenende im Herbst (also genau heute) funkt die Zeitumstellung von Sommerzeit auf die „normale“ Zeit dazwischen, weil die Files auf dem USB-Stick das „Zurückdrehen“ der Uhrzeit nicht mitbekommen, aber eine externe USB-Festplatte schon!

Die Folge ist, daß heute Nacht auf dem USB-Stick alle Files auf einen Schlag um 1 Stunde jünger werden als die gleichen Files auf der Festplatte: Daher würde beim Einspielen der komplette Inhalt des Sticks (bis zu 32 GB und mehr) auf die anderen PC’s und externen Festplatten kopiert und beim nächsten Sichern wieder geholt. Das bedeutet je nach Anzahl der PC's und Festplatten oft ein stundenlanges sinnloses Hin-und-Herkopieren unveränderter Datenbestände. (Im Frühling macht jedoch das „Vordrehen“ der Uhr für das Kopieren nicht aus.)

Meine bisherige Abhilfe ist/war, daß ich am letzten Samstag im Oktober überall alle Daten auf denselben Stand gebracht habe und ab dem ersten Tag der herbstlichen Zeitumstellung ein neues USB-Stick verwendet habe. Es ist lästig, und wenn ich es mal vergesse, dann habe ich mir viel überflüssige Arbeit gemacht.

Kurz und gut:
Wie kann man dem USB-Stick die Zeitumstellung „beibringen“?
Schließlich bekommt eine externe – über eine USB-Schnittstelle gelegentlich angeschlossene – Festplatte die Zeitumstellung ja auch automatisch mit.

Vielen Dank für Eure Hilfe im Voraus!
Gruß, Andreas

Dalai 30. Okt 2021 19:23

AW: Zeitumstellung – Files auf USB-Stick kriegen sie nicht mit, externe Festplatten s
 
Das hat nichts damit zu tun, dass hier Sticks statt Festplatten benutzt werden sondern mit dem Dateisystem. NTFS speichert intern alles als UTC und zur Anzeige wird das in lokale Zeit umgerechnet. FAT-Dateisysteme (außer vielleicht exFAT) speichern immer lokale Zeit. Deswegen führen Zeitumstellungen sowie Umzüge in andere Zeitzonen zu solchen Problemen bei Verwendung von FAT-Dateisystemen.

Lösungsmöglichkeiten:
  • Ordentliches Synchronisierungsprogramm oder Backupprogramm benutzen
  • Alle relevanten Datenträger mit demselben Dateisystem ausstatten, sinnvollerweise NTFS.
Für Möglichkeit 1 bietet sich z.B. Rsync (cwRsync) an, oder vielleicht auch Robocopy. Rsync vergleicht immer Zeitstempel und Größe bevor es an den Inhalt geht, d.h. im Idealfall (bei gleicher Dateigröße) werden nur Zeitstempel synchronisiert, aber keine Inhalte. Unter anderem deswegen ist Rsync so schnell. Ob und wie die Erkennung von Änderungen an Dateien bei Robocopy erfolgt, weiß ich leider nicht.

Grüße
Dalai

Alter Mann 30. Okt 2021 19:28

AW: Zeitumstellung – Files auf USB-Stick kriegen sie nicht mit, externe Festplatten s
 
Komisches Verhalten dieser Software hier.

Total-Commander, Menü Dateiattributte ändern.
Geht auch in Bezug auf Datum/Uhrzeit inkl Unterverzeichnisse.

Oder mit Get/Set FileTime:)

Andreas13 30. Okt 2021 21:41

AW: Zeitumstellung – Files auf USB-Stick kriegen sie nicht mit, externe Festplatten s
 
Zitat:

Zitat von Alter Mann (Beitrag 1496847)
...Total-Commander, Menü Dateiattributte ändern.
Geht auch in Bezug auf Datum/Uhrzeit inkl Unterverzeichnisse.
Oder mit Get/Set FileTime:)

Das Problem ist nur, daß ich u. U. Zehntausende Dateien mit individuell unterschiedlichen Speicherzeiten auf dem USB-Stick habe. Die Zeit müßte ich für jede Datei einzeln ändern, was wegen der Masse nicht praktikabel ist.

Zitat:

Zitat von Dalai (Beitrag 1496846)
Das hat nichts damit zu tun, dass hier Sticks statt Festplatten benutzt werden sondern mit dem Dateisystem. NTFS speichert intern alles als UTC und zur Anzeige wird das in lokale Zeit umgerechnet. FAT-Dateisysteme (außer vielleicht exFAT) speichern immer lokale Zeit. Deswegen führen Zeitumstellungen sowie Umzüge in andere Zeitzonen zu solchen Problemen bei Verwendung von FAT-Dateisystemen.

Das war mir nicht bekannt: Danke für den Tipp! So werde ich beim neuen USB-Stick vorgehen.
Allerdings kann ich beim vorhandenen Stick, das bereits Dateien enthält, die FAT leider nicht auf NTFS ändern.

Danke Euch!
Gruß, Andreas

Dalai 30. Okt 2021 22:19

AW: Zeitumstellung – Files auf USB-Stick kriegen sie nicht mit, externe Festplatten s
 
Beachte, dass Datenträger mit NTFS per "Hardware sicher entfernen" vom System abgemeldet werden sollten (meiner Meinung nach sogar müssen), weil NTFS ein Journal benutzt und somit immer Dateien offen hat, selbst wenn der Datenträger ohne Cache verwendet wird (Default bei USB-Sticks/-Wechselmedien).

In Bezug auf die Änderung des Zeitstempels von vorhandenen Dateien: Es gibt da so schicke Addons für Total Commander, mit denen eine relative Änderung der Zeitstempel möglich ist, namentlich AddTime[1][2] und ReDate[3]. Das sind übrigens alles Delphi-Programme :).

[1] https://totalcmd.net/plugring/addtime_addon.html
[2] https://totalcmd.net/plugring/addtime_addon2.html
[3] https://totalcmd.net/plugring/redate_addon2.html

Theoretisch (und auch praktisch) kann man FAT(32)-Dateisysteme ohne Datenverlust in NTFS konvertieren, mit dem "convert"-Kommando auf einer (administrativen) CMD. Einen Nachteil hat das allerdings: die Clustergröße wird dabei auf 512 Bytes gesetzt statt auf die standardmäßigen 4KB. Das führt zu deutlich höherem Verwaltungsaufwand und langsameren Zugriffen. Bin mir nicht sicher, ob das heutzutage immer noch so ist, aber diese Erfahrungen hab ich vor vielen Jahren gemacht.

Grüße
Dalai

Andreas13 31. Okt 2021 17:51

AW: Zeitumstellung – Files auf USB-Stick kriegen sie nicht mit, externe Festplatten s
 
Vielen herzlichen Dank für Deine tollen Tipps & Erläuterungen! :thumb:
Gruß, Andreas

Delphi.Narium 31. Okt 2021 18:16

AW: Zeitumstellung – Files auf USB-Stick kriegen sie nicht mit, externe Festplatten s
 
Zitat:

Zitat von Dalai (Beitrag 1496853)
Einen Nachteil hat das allerdings: die Clustergröße wird dabei auf 512 Bytes gesetzt statt auf die standardmäßigen 4KB.

Hiernach What does cluster size mean? scheint dem nicht zwingend so zu sein:
Zitat:

Zitat von What does cluster size mean?
Imaging that if you use Convert.exe utility to convert a FAT to NTFS, Windows always uses the original FAT cluster size as the NTFS cluster size for cluster size up to 4KB. If the FAT cluster size is greater than 4KB, then, the clusters are converted down to 4KB in NTFS.



Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz