AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte VPHD - Virtual private hard-disc

VPHD - Virtual private hard-disc

Ein Thema von olee · begonnen am 3. Jan 2012 · letzter Beitrag vom 23. Aug 2015
Antwort Antwort
Seite 3 von 6     123 45     Letzte » 
Benutzerbild von olee
olee
Registriert seit: 16. Feb 2008
Hallöchen alle zusammen!

Habe mich lange Zeit nicht hier im Forum blicken lassen, da ich in letzter Zeit leider zu viel mit Uni (und zocken xD) zu tun hatte.
Aber ich dachte mir, dass ich das mal endlich hinter mich bringen sollte.
Naja lange Rede kurzer Sinn:

Ich möchte euch hier mein neustes (altes) Projekt VPHD vorstellen.

Bei diesem Tool handelt es sich wie der Name schon ausdrückt um eine art Archiv für Dateien zur sicheren Aufbewahrung.
Der große Unterschied und auch Vorteil dieses Programms im Gegensatz zu normalen verschlüsselten Archiven wie WinRar, 7zip und Co. ist, dass dieses Format auf sehr große Datenmengen und vor allem das häufig Hinzufügen, Löschen und Ändern von Daten ausgelegt ist.
Übliche Archive müssen bei jeder Veränderung des Inhaltes neu geschrieben werden, was bei einer Änderung einer kleinen Datei in einem etwa 2 GB dann schon mal so 10 minuten dauern kann.

Das Format von VPHD hingegen verhält sich, wie der Name schon sagt, mehr wie ein Dateisystem.
Der Vorteil ist, dass das Hinzufügen, Löschen und Ändern von Dateien nur so lange dauert, wie das schreiben eben dieser einen Datei.
Beim Löschen wird demnach nicht mehr gemacht als im Dateiindex des Containers der Speicherbereich der Datei als Frei markiert, ähnlich einer normalen Festplatte.
Diese Lücken werden dann nach und nach durch Hinzufügen neuer Dateien und eine einfache Optimierung nach und nach wieder gefüllt.

Die wichtigste Funktion von VPHD liegt jedoch in der (optionalen) Verschlüsselung von Containern.
Damit lassen sich beliebige Dateien in einem passwort-geschütztem Container aufbewahren, welcher sich jedoch ohne großen Aufwand schnell auslesen lässt.

Hier eine kleine Zusammenfassung der Features des Programms:
  • Einfaches Hinzufügen / Extrahieren von Dateien per Drag'n'Drop
  • Es lassen sich wahlweise verschlüsselte oder unverschlüsselte Container anlegen
  • Archive lassen sich in eine ausführbare Anwendung umwandeln, wodurch sich die Daten von überall her lesen lassen
    (Nur das Verändern in diesem Format geht noch nicht so einfach)
  • Das Programm ist (bisher) in Deutsch und Englisch verfügbar (ja nach Systemeinstellung)

Mit freundliche Grüßen
Björn Zeutzheim


PS: Hier die direkten Download-Links:
VPHD Setup (916 KB)
VPHD mit Sourcen (1.454 KB)
Codename: Performancepumpe

Geändert von olee (28. Jun 2015 um 00:40 Uhr)
 
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#21
  Alt 5. Jan 2012, 15:44
Muss ich mir mal genauer angucken, ob das reicht. Weil es wäre gut, wenn man noch Dateien (auch mit Wildcards) und Verzeichnisse ausschließen könnte.
Ich habe bisher ja nur die elementarsten Funktionen in die Kommandozeile eingebaut.
Es sollen später viel mehr Optionen zur Verfügung stehen.
Ich denke dabei auch an Funktionen, die verschlüsselten Daten mit incrementellen Backups sichern zu können etc.


Und muss man, wenn man ein Verzeichnis hinzufügt auch einen Pfad im Archiv angeben?
Ein Pfad im Archiv muss ja immer angegeben werden, damit VPHD weiß, wohin es den Ordner packen soll.
Wenn der Ordner ins Root-Verzeichnis gepackt werden soll, so muss nur ein "\" als Parameter angegeben werden (steht auch in der /help)
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#22
  Alt 5. Jan 2012, 18:48
Na ja, das Programm könnte ja so schlau sein, dass wenn man keinen Pfad angibt, es den Pfad nimmt von dem Verzeichnis, welches man hinzufügen will.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#23
  Alt 5. Jan 2012, 18:51
Ich glaube du verstehst da etwas falsch.

Wenn man beispielsweise folgendes ausführt:
Code:
vphd_console /edit test.vphd /add "C:\MyTestDirectory" "\"
wird im Archiv unter dem Root-Verzeichnis das Verzeichnis MyTestDirectory eingefügt.
Der Name des Archives wird verwendet.
Was gefragt ist, ist nicht der Name, unter dem das Verzeichnis hinzugefügt werden soll, sondern der des Parent-Verzeichnisses im Archiv!

Code:
vphd_console /edit test.vphd /add "C:\MyTestDirectory" "MyRootSubDir\"
Dieser Befehl dagegen würde das gleiche Verzeichnis als ein Unterverzeichnis von dem neuen (bzw. evt. schon existierenden) Ordner namens "MyRootSubDir" hinzufügen.
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#24
  Alt 5. Jan 2012, 19:00
Ach so. OK, dann ist das in Ordnung.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#25
  Alt 5. Jan 2012, 19:03
Momentan arbeite ich an einer Statistikfunktion für das Archiv, welche unter anderem entscheiden soll, ob eine Defragmentierung nötig ist oder nicht.
Hat vllt. jemand eine Idee, wann man eine Defragmentierung durchführen sollte?
Zur Verfügung stehen folgende Daten:
Delphi-Quellcode:
  TVphdStats = record
    FragmentedFiles : Integer;
    FragmentedChunks : Integer;
    FragmentedFilesSize : Int64;
    TotalFiles : Integer;
    TotalChunks : Integer;
    TotalFilesSize : Int64;
    FreeSpace : Int64;
    HeaderSize : Integer;
    GapCount : Integer;
    AvgGapSize : Int64;
    LargestGap : Int64;
    SmallestGap : Int64;
  end;
MFG
Björn
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#26
  Alt 5. Jan 2012, 20:41
Ich habe eine neue Version mit folgenden Verbesserungen hochgeladen:
  • Erweiterte Funktionalität des Konsolentools
  • Die Defragmentierung wird jetzt nur noch nach der Zustimmung des Benutzers durchgeführt (siehe unten)
  • Möglichkeit zum Anzeigen einer Statistik über das Archiv

Wenn man nun ein geöffnetes Archiv schließt, welches größere Lücken enthält oder stark fragmentiert ist, fragt das Programm, ob es das Archiv defragmentieren und optimieren soll, anstatt wie bisher jedes mal.
Vorerst verwende ich dabei folgende Kontrolle:
Delphi-Quellcode:
function TVPHD.RecommendDefrag: Boolean;
var
  stats : TVphdStats;
begin
  GetStatistic(stats);
  with stats do
    Result :=
      ((FreeSpace / TotalSize > 0.05) and (GapCount > 5)) or
      (FragmentedFiles / TotalFiles > 0.05);
end;
--> Defragmentiere wenn (Freier-Speicher im Archiv > 5%) oder (Anteil an fragmentierten Dateien > 5%)

Denkt ihr, dass ist so gerechtfertigt oder würdet ihr andere Bedingungen bevorzugen?
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#27
  Alt 5. Jan 2012, 21:10
Kann man die Defragmentierung auch manuell auslösen?
Michael
  Mit Zitat antworten Zitat
doctor-x
 
#28
  Alt 5. Jan 2012, 21:56
Hallo,

absolut ein tolles teil! Danke

Anmerkungen / Verbesserungsvorschläge

1. Wenn ein falsches Passwort eingegeben wurde, würde ich es vorziehen das sich nicht ein leeres Container Fenster öffnet, sonder nach der Meldung "Falsches Passwort" die möglichkeit besteht dieses erneut einzugeben oder man die Datei erneut öffnen muss um es erneut zu versuchen.

2. Es wäre meiner bescheidenen meinung nach angenemer wenn sich das fenster in der mitte des Bildschirms öffnet.

3. Ich erhalte die Fehlermelddung im Anhang, wenn ich ein neues Archiv anlege (auch mit Admin Rechten). Dieses wird dann aber offenbar fehlerfrei angelegt und kann verwendet werden.

4. Die Defragmentierung / Optimirung wurde bei mir nicht immer (beim löschen von ca. 90% der Daten) beim schließen des Programms vorgeschlagen. Manuell geht es aber einwandfrei. Aber das ist wohl noch in arbeit

(System: Win 7 Pro 64)

Nochmal Danke
Miniaturansicht angehängter Grafiken
error.jpg  
Wolf
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#29
  Alt 5. Jan 2012, 22:07
1. Wenn ein falsches Passwort eingegeben wurde, würde ich es vorziehen das sich nicht ein leeres Container Fenster öffnet, sonder nach der Meldung "Falsches Passwort" die möglichkeit besteht dieses erneut einzugeben oder man die Datei erneut öffnen muss um es erneut zu versuchen.:
Also sollte es sich so verhalten?
Passwort abfragen, bis es richtig ist oder Cancel gedrückt wurde?
Und nachdem Cancel gedrückt wurde, das Programm komplett schließen?


3. Ich erhalte die Fehlermelddung im Anhang, wenn ich ein neues Archiv anlege (auch mit Admin Rechten). Dieses wird dann aber offenbar fehlerfrei angelegt und kann verwendet werden.:
Tut mir leid, aber diesen Fehler konnte ich nicht reproduzieren.
a) Hast du die neuste Version verwendet?
b) Was GENAU hast du gemacht?


4. Die Defragmentierung / Optimirung wurde bei mir nicht immer (beim löschen von ca. 90% der Daten) beim schließen des Programms vorgeschlagen. Manuell geht es aber einwandfrei. Aber das ist wohl noch in arbeit
Wenn der die Defragmentierung nicht ausgelöst hat, wird so wohl auch nicht nötig gewesen sein (was nur beim Löschen von Dateien der Fall ist).
Ein Teil der Optimierung geschieht auch schon während Dateien gelöscht / hinzugefügt werden.
Es kommt drauf an, wo die Dateien liegen, die gelöscht wurden.
Wenn alle davon am Ende des Dateisystems lagen, entstehen überhaupt keine Lücken und damit auch keine Notwendigkeit einer Optimierung.
Am besten lässt sich das im Fragmentierungs-Graphen sehen.
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG
 
#30
  Alt 5. Jan 2012, 22:34
Was imho (insbesondere für Backups) ganz interessant wäre (falls dir mal langweilig wird):
  • Die Reduzierung der Archivgröße durch Anlegen von Hardlinks oder noch schlimmer: Wiederverwenden von einzelnen Chunks
  • Anlegen einer Historie, also die Änderungen speichern und Zugriff an spezielle benennbaren Zeitpunkte (z.B. nach einem Backup) ermöglichen.
  • "Sicheres" Splitten in mehrere kleinere Dateien, vllt. so wie bei RAR, wo Teile beschädigt sein können. Natürlich sollte man es auch wieder zusammenfügen können.

Die Verschlüsselung würde ich nicht als Alternative zu TrueCrypt und Co. "bewerben", bei Kryptografie kann man so viele Fehler machen ...

Außerdem wäre es interessant zu wissen, wie sich dein Dateiformat verhält, wenn das Programm während eines Schreibvorgangs abstürzt (muss ja nicht deine Schuld sein). Wird dann die Datei korrumpiert? Cool wäre natürlich, wenn es einen Crash-Save-Modus geben würde, in dem höchsten die zuletzt geschrieben Datei unbrauchbar wird (Anwendungsfall: Backup, das sollte besser nicht korrupiert werden.).


EDIT:
Tut mir leid, aber diesen Fehler konnte ich nicht reproduzieren.
a) Hast du die neuste Version verwendet?
b) Was GENAU hast du gemacht?
Ich konnte es Reproduzieren:
  1. neuste Version (Setup aus ersten Betrag)
  2. Programm starten, neues Archiv anlegen, im erscheinenden Passwortdialog [OK] drücken ohne ein Passwort anzugeben.
Wenn man ein Archiv geöffnet hat und ein neues anlegen will, dann gibt es auch eine schöne Division durch Null.

EDIT2:
Code:
---------------------------
Öffnen?
---------------------------
Diese Datei ist ein Archiv. Möchten Sie dieses öffnen, oder dem aktuellen Archiv anfügen?
---------------------------
Ja  Nein  
---------------------------
Was soll ich da antworten? Wenn ich [Ja] klicke gibt es eine Division durch Null.




Bei der ganzen "Meckerei" nicht zu vergessen zu erwähnen:
Schön das wieder einmal so ein größeres, durchdachtes Projekt gepostet wird

Geändert von BUG ( 5. Jan 2012 um 22:59 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf