| 
     | 
  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