Personal Backup Version 5.9 |
|
© 2001 − 2018, Dr. Jürgen Rathlev |
Seit Vers. 5.0 wird Personal Backup mit einer Entwicklungsumgebung erstellt, die den Unicode-Zeichensatz unterstützt (aktuell Delphi 10 Seattle). Damit gehören die Beschränkungen des ANSI-Zeichensatzes (ISO-8859) bei Dateinamen der Vergangenheit an. Außerdem sind jetzt Pfadlängen von mehr als 260 Zeichen erlaubt.
Die wichtigsten Merkmale:
Der existierende Standard für das gzip-Format (RFC1952 von 1996) legt fest, dass der Dateiname im ISO-8859-1-Zeichensatz gespeichert werden soll. Ich habe leider keine allgemein gültigen Festlegungen gefunden, wie mit Unicode-Dateinamen umzugehen ist.
So weicht z.B. die aktuelle Linux-Version des Programms GZip, mit dem gz-Archive erzeugt und gelesen werden können, von diesem Standard ab und speichert den Dateinamen im UTF-8-Format. Dabei wird das OS-Byte im Header auf 3 (Unix) gesetzt.
Personal Backup hat dieses Byte bislang immer auf 0 (FAT) gesetzt und den Dateinamen als ISO-8859-1 gespeichert. Um mit den bisherigen Versionen kompatibel zu bleiben und trotzdem auch Unicode-Zeichen zu unterstützen, werden jetzt zwei Varianten benutzt:
Damit ergibt sich allerdings das Problem, dass Fremdprogramme (wie z.B. WinZip oder WinRar) die von Personal Backup in den gz-Dateien gespeicherten Dateinamen nur im ersten Fall richtig erkennen. Auf das Entpacken hat das allerdings keinen Einfluss.
Besser wäre es sicherlich das z.Zt nicht benutzte Bit 5 des FLG-Byte als Unterscheidungs-Merkmal für die Kodierung zu benutzen. So ähnlich wird es z.B. beim Zip-Format (s.u.) gemacht.
Im existierenden Standard für das gzip-Format (RFC1952 von 1996) ist für die Größe der unkomprimierten Datei nur ein 32-bit-Wert vorgesehen. Bei Dateien ≥ 4 GB wird dieser Wert dann modulo 232 geschrieben. Viele Packprogramme (wie z.B. 7-zip) unterstützen allerdings die Angabe der Dateigröße in einem Extrafeld mit der Signatur 0x0100, wie es auch von Personal Backup benutzt wird.
Details dazu sind weiter unter näher beschrieben.
Beim Zip-Format ist in der Spezifikation Version 6.3.2 v. Sept. 2007 beschrieben, wie mit Unicode-Dateinamen umzugehen ist: Wenn das Bit 11 des general purpose bit flag gesetzt ist, sind Dateiname und Kommentar UTF-8-kodiert. Personal Backup hält sich an diese Vorgabe. Inzwischen unterstützten auch viele Packprogramme diesen Standard (z.B. WinZip Vers. 12, WinRar Vers. 3.80 und 7-Zip Ver. 4.65).
Die Dateien werden nach dem AES-Verfahren verschlüsselt. Dabei werden die gleichen Routinen, wie bei WinZip verwendet (siehe Infos bei Winzip und bei Brian Gladman). Das erzeugte Datenformat hängt allerdings vom gewählten Backup-Modus ab:
Signatur : JREx (4 Bytes - ab Vers. 5.8.5) TimeStamp : Unix time (4 Byte - ab Ver. 5.9.0) Attribute : Datei-Attribute (2 Byte - ab Ver. 5.9.0) Enc-Header : 10, 14 oder 18 Bytes (abhängig von der Verschlüsselungstiefe): Saltwert (8, 12 oder 16 Bytes) + Kennwortprüfwert (2 Bytes) Enc-Data : Anzahl Bytes wie Quelldatei Enc-Trailer: 10 Bytes Authentifizierungscode
GZip-Header : 10 Bytes wie Standard neu: Flag-Byte: bit 5 = encrypted Extrafeld : (ID=1) Optional für Dateien > 4GB - 20 bytes Extrafeld : (ID=$524A) Signatur JR + Angabe der Verschlüsselungstiefe (ab Version 5.8.5) - 6 Bytes Dateiname : ISO-8859-1 (OS=0 - FAT) oder UTF-8 (OS=11 - NTFS) Enc-Header : 10, 14 oder 18 Bytes (abhängig von der Verschlüsselungstiefe) Enc-Data : Anzahl Bytes wie komprimierte Quelldatei Enc-Trailer : 10 Bytes (s.o.) GZip-Trailer: 8 Bytes Crc immer = 0
Ergänzungen zum WinZip-Format: Local File Header / Central Directory Header: general purpose bit flag - Bit 8: filenames are encrypted Extra Data Field for encrypted filenames ---------------------------------------- Offset Size Contents 0 2 Header ID of extra field (0x9909) 2 2 Data size (n) in bytes (variable) 4 n Encrypted filename
Alle Kennwörter, sowohl für FTP, SMTP als auch AES-Verschlüsselung müssen in der Kodierung ISO-8859-1 angegeben werden
Für Pfadlängen gibt es unter allen Windows Betriebssystemen an vielen Stellen
immer noch eine Beschränkung auf 260 Zeichen
(Weitere Infos).
Dies betrifft alle Anwendungen, die nicht die Unicode-Versionen der Windows-API-Funktionen
verwenden, und unter Windows XP auch alle Anwendungen, die die Windows-Shellkomponenten
benutzen, wie z.B. der Explorer. Diese Beschränkung ist erst seit Windows 7 aufgehoben.
In Personal Backup macht sich dies an allen Stellen bemerkbar, wo das Programm
Windows-Shell-Komponenten verwendet (z.B. im Dialog zur Auswahl eines Verzeichnisses
oder einer Datei). Erst ab Windows 7 sind auch hier lange Pfade erlaubt.
Intern wird für alle Datei-verarbeitenden Windows-Funktionen (z.B. beim Kopieren)
das Pfad-Präfix "\\?\" verwendet, wodurch eine max. Länge von ca. 32000 Zeichen möglich ist.
Daher ist mit der Version 5 die Sicherung, das Überprüfen, das Wiederherstellen und das Löschen
von Dateien mit überlangen Pfaden möglich, auch wenn dies noch nicht von anderen Programmen
vollständig unterstützt wird (z.B. Windows-XP-Explorer). Ein mir bekannter Dateimanager, der mit langen Pfaden
keine Probleme hat, ist der
TotalCommander seit Vers. 7.5