Laden...

[gelöst] Eigene Projektdatei erzeugen

Erstellt von MrBigBrain vor 15 Jahren Letzter Beitrag vor 15 Jahren 917 Views
M
MrBigBrain Themenstarter:in
16 Beiträge seit 2005
vor 15 Jahren
[gelöst] Eigene Projektdatei erzeugen

Hi,
erstmal moechte ich mich dafuer Entschuldigen, dass ich vielleicht das falsche Unterforum gewaehlt habe (passt Rund um die Programmierung besser?).

Nun zu meiner Frage:
Ich moechte eine Backupsoftware schreiben. Man soll beliebig viele Projekte erstellen koennen, mit denen man unterschiedliche Dateien sichern kann.
Dazu stellt sich mir die Frage, wie ich die Projekte am besten als Dateien speichern kann.
Zuerst hatte ich die Idee, einfach XML Dateien fuer jedes Projekt zu erzeugen.
Die sehen dann z.B. so aus:

<?xml version="1.0" encoding="utf-8"?>
<Projectfile>
  <Name>Example</Name>
  <Data>
    <Folder>
      <Path>j:\qwasd</Path>
      <Checksum>cfg39422</Checksum>
    </Folder>
    <Folder>
      <Path>j:\sadasdasd</Path>
      <Checksum>wertw453</Checksum>
    </Folder>
    <Project>
      <Checksum>sdcfgh42</Checksum>
    </Project>
  </Data>
  <Username>John Doe</Username>
  <Date>
    <Day>07</Day>
    <Month>12</Month>
    <Year>2008</Year>
  </Date>
  <Size>4530639423</Size>
  <FTP>
    <Username>John</Username>
    <Password>Secret</Password>
  </FTP>
  <FileCount>342342352346</FileCount>
</Projectfile>

Dann bin ich auf Serialisierung gestossen. Wuerde sich Serialisierung dazu eignen, Projekte (also meine Klasseninstanzen) zu speichern, wenn ich z.B. Felder wie Projektname, Groesse, MD5 etc. habe. Und kann man per Serialisierung Arrays speichern?

Dazu kommt noch das Problem, dass ich ja eigentlich fuer ein differentielles, oder inkrementelles Backup mir von jeder Datei, die gesichert werden soll eine MD5 Checksum erstellen muss, und in einem Array/Arraylist speichern. Wenn ich jetzt z.B. 20000 Dateien sichern moechte, und jede Checksumme in meine "Projektdatei" speichere, wuerde dies ja Unmengen an Speicherplatzt verbrauchen, und meine Projektdatei waere z.B. 20MB gross.
Kann man das irgendwie anders loesen? Also das mein Programm sehen kann, ob es diese und jene Datei schon gesichert hat?

lg 👍

S
64 Beiträge seit 2008
vor 15 Jahren

Hi,

zumindest für dein letztes Problem, wie du feststellen kannst, ob eine Datei von dir bereits gesichert wurde oder nicht, böte sich das Archiv-Attribut einer jeden Datei an. Wenn du dieses für jede Datei löscht, die du gesichert hast, kannst du dieses bei einem erneuten Lauf prüfen, ob sich dieses geändert hat. Dieses Attribut sollte vom System eigentlich immer dann gesetzt werden, wenn sich etwas an der Datei ändert. Damit würdest du dir die Generierung irgendwelcher Checksummen sparen.

Problematisch wäre diese Vorgehensweise nur dann, wenn durch ein anderes Programm oder so, dieses Archiv-Attribut ebenfalls geändert wird.

Grüße

C
401 Beiträge seit 2007
vor 15 Jahren

Dann bin ich auf Serialisierung gestossen. Wuerde sich Serialisierung dazu eignen, Projekte (also meine Klasseninstanzen) zu speichern, wenn ich z.B. Felder wie Projektname, Groesse, MD5 etc. habe. Und kann man per Serialisierung Arrays speichern?

Dazu kommt noch das Problem, dass ich ja eigentlich fuer ein differentielles, oder inkrementelles Backup mir von jeder Datei, die gesichert werden soll eine MD5 Checksum erstellen muss, und in einem Array/Arraylist speichern. Wenn ich jetzt z.B. 20000 Dateien sichern moechte, und jede Checksumme in meine "Projektdatei" speichere, wuerde dies ja Unmengen an Speicherplatzt verbrauchen, und meine Projektdatei waere z.B. 20MB gross.
Kann man das irgendwie anders loesen? Also das mein Programm sehen kann, ob es diese und jene Datei schon gesichert hat?

lg 😮

Also... Serialisierung ist sicherlich ein guter Weg dein Ziel zu erreichen. Arrays sollten möglich sein, solltest du aber nicht verwenden. Benutze Listen. Und deine Rechnung kann ich nicht ganz nachvollziehen.

Eine MD5 Checksumme hat 128bit, also 16 Byte. Bei 20.000 Dateien wären es also 320.000 Byte, also etwas über 310kB. Je nachdem, wieviele Daten du noch in einem Objekt speicherst solltest du bei ca. 1MB sein. Finde ich für eine Projektdatei nicht viel.

M
MrBigBrain Themenstarter:in
16 Beiträge seit 2005
vor 15 Jahren

OK danke fuer eure Antworten.
Ich werde jetzt Versuchen, es mit Serialisierung zu loesen.
Kein Ahnung, was ich da fuer einen Mist zusammengerechnet habe. Ich habe eben mal eine Beispielprojektdatei erzeugt, und bin mit der Groesse relativ zufrieden.