AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Backup von offenen/gesperrten Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

Backup von offenen/gesperrten Dateien

Ein Thema von Ares · begonnen am 24. Jul 2006 · letzter Beitrag vom 24. Jul 2006
Antwort Antwort
Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#1

Backup von offenen/gesperrten Dateien

  Alt 24. Jul 2006, 12:23
Hallo!

Ich habe mir ein kleines Programm gebastelt, mit dem ich von verschiedenen Dateien in regelmäßigen Abständen Backups anlegen kann. Ein einfaches Backup Tool eben. Das Problem ist, dass das Programm nur Dateien sicher kann, die nicht gerade von einem anderen Programm verwendet werden und daher schon geöffnet/gesperrt sind.

Nun gibt es aber ja Image-Programme, die im laufenden Betrieb ganze Partitionen sichern. Irgendwie muss es also möglich sein auch solche Dateien zu sichern die gerade verwendet werden. Aber wie?

Ich habe hier schon ein paar Themen gefunden, die sich mit ähnlichen Problemen beschäftigen. http://www.delphipraxis.net/internal...t.php?p=575098 beschäftigt sich z.B. damit wie man ein Partitions-Image erstellt. Aber ich will ja keine ganze Partition sichern sondern nur einzelne Dateien. Genau hierzu habe ich leider nichts konkretes gefunden.

Habt ihr Tipps für mich, wie man das lösen könnte oder wo man nach Hinweisen auf eine Lösung suchen könnte?

Besten Dank!
Ares
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Backup von offenen/gesperrten Dateien

  Alt 24. Jul 2006, 13:23
Im Grunde haben wir das schon erklärt.

Du müstest halt "nur" die Position der Datei auf dem Datenträger auslesen und dann über einen "direkten" Zugriff auf den Datenträger diese Stellen auslesen.

Aber da kommst du ohne Kenntnisse, wie die Partition aufgebaut ist, keinen Schritt weiter.

bei FAT z.B.:
- testen ob und was für'n FAT (FAT12, FAT16, FAT32)
- RootVereichnis suchen und von dort aus, über alle Zwischenverzeichnisse, bis zum gewünschten Verzeichnis/Datei durchhangeln
(also jeweils Eintrag in der Verzeichnisliste suhen, Position ausesen und dort hinspringen)
- dann hast'e erstmal den Clustersector
- dieser muß dann ungerechnet werden
ErstesByte := ErsterDatenCluster(StartSecrot * BytePerSector) * SectorsPerCluster * BytePerSector

Dann darfst du dich aber auch noch durch das VolumeBitmap kämpfen, wo du nachsehn muß ob und wo die restlichen Cluster für die Datei rumliegen.
Die Datei könnte ja fragmentiert sein, was bedeuten würde, daß du nicht einfach alle Bytes (Dateigröße) hintereinander auslesen kannt ...

tja das wäre so in etwa der Weg, wie es ginge bei NTFS ist es natürlich ähnlich, außer daß dort die Datenstrukturen etwas anders sind.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Backup von offenen/gesperrten Dateien

  Alt 24. Jul 2006, 13:31
Zitat von himitsu:
Du müstest halt "nur" die Position der Datei auf dem Datenträger auslesen und dann über einen "direkten" Zugriff auf den Datenträger diese Stellen auslesen.
Und dabei beten, dass das Programm nicht gerade während des Kopiervorganges die Datei ändert. Nicht umsonst kann man eine gesperte (exklusiv geöffnete) Datei nicht kopieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#4

Re: Backup von offenen/gesperrten Dateien

  Alt 24. Jul 2006, 13:49
Danke euch beiden für eure Antworten!

Es wird also nicht die Datei kopiert/gelesen sondern direkt die Cluster auf der Festplatte die zu der Datei gehören. Hierzu muss ich mich irgendwie durch das Dateisystem hangeln und herausfinden welche Cluster zu der Datei gehören. Korrekt?

Zitat:
Und dabei beten, dass das Programm nicht gerade während des Kopiervorganges die Datei ändert. Nicht umsonst kann man eine gesperte (exklusiv geöffnete) Datei nicht kopieren.
Das müsste ja eigentlich möglich sein, diverse Image-Programme schaffen es ja auch. Ein Programm, was beim Backup eines kompletten System nur "hofft", dass die Daten zwischenzeitig nicht geändert werden, wäre wahrscheinlich nicht allzugut. Deshalb muss es doch eigentlich einen Weg geben sicherzustellen, dass die Daten beim Lesen nicht geändert werden. Kann man den Zugriff auf bestimmte Cluster nicht kurzfristig exlusiv erhalten?
Bevor man anfängt die Cluster zu lesen, müsste man natürlich erst feststellen ob die Datei nicht gerade geändert wird (kann man dass?).
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#5

Re: Backup von offenen/gesperrten Dateien

  Alt 24. Jul 2006, 14:02
Hmm, all diese Imaging-Tools schreiben aber auch groß und breit dabei, das während des ARbeitsprozesses kein anderes Programm ausgeführt werden sollte. Zumindest die, mit denen ich bisher gearbeitet habe, haben das so gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Backup von offenen/gesperrten Dateien

  Alt 24. Jul 2006, 14:11
Zitat von Thanatos81:
Hmm, all diese Imaging-Tools schreiben aber auch groß und breit dabei, das während des ARbeitsprozesses kein anderes Programm ausgeführt werden sollte.
ist aber auch richtig so, denn die Daten der Platte sind ja schön verstreut, also irgendwo steht wo sich 'ne Datei befindet und die Datei selber ist wo ganz anders.

Das Auslesen dauert ja 'ne ganze Weile ... also wenn sich da was ändert (Datei wird von irgendeinem Prog bearbeitet/geändert/erstellt/gelöscht), dann könnte die Angabe in einem eingelesenen Verzeichnis nicht mit den tatsächlichen Daten übereinstimmen...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 05:55 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