NTFS-komprimierte Ordner: Ist es möglich, das Komprimierungsverhältnis zu optimieren?

18

Wie es scheint, komprimiert Windows die NTFS-komprimierten Ordner mit der geringstmöglichen Komprimierungsrate. Dies ist zwar möglicherweise gut, um die Geschwindigkeit zu erhöhen und die CPU-Auslastung zu verringern, für Dateien, auf die selten zugegriffen wird (Sicherungsordner), ist es jedoch sinnvoller, die Möglichkeit zu haben, die Komprimierungsrate zu erhöhen. Gibt es einige Parameter, die geändert werden können, um dies zu erreichen?

Al Berger
quelle
2
Sie sagen über "Komprimierungsformat": "Jeder andere Wert gibt an, dass eine Datei unter Verwendung des durch den Wert für den Komprimierungsstatus angegebenen Komprimierungsformats komprimiert wurde." Ich habe nicht gefunden, was dieses "Format" bedeutet und wie es eingestellt ist.
Al Berger

Antworten:

14

Kurze Antwort

Nein, das ist derzeit nicht möglich.

Lange Antwort

Dateien und Ordner 1 werden komprimiert und dekomprimiert, indem ein FSCTL_SET_COMPRESSIONSteuercode und ein Komprimierungsstatus an die DeviceIoControl API- Funktion übergeben werden. Der Komprimierungsstatus kann einer der folgenden sein:

COMPRESSION_FORMAT_NONE = 0
COMPRESSION_FORMAT_DEFAULT = 1
COMPRESSION_FORMAT_LZNT1 = 2

Ein Wert ungleich Null bedeutet, dass das Zielelement komprimiert wird. Aus der offiziellen Dokumentation:

Der LZNT1-Komprimierungsalgorithmus ist der einzige implementierte Komprimierungsalgorithmus. Infolgedessen wird der LZNT1-Komprimierungsalgorithmus als DEFAULTKomprimierungsmethode verwendet.

Quelle: FSCTL_SET_COMPRESSION-Steuercode

Der LZNT1-Algorithmus ist auf Geschwindigkeit ausgelegt, und es gibt keine Möglichkeit, eine benutzerdefinierte Komprimierungsstufe festzulegen.

1 Ordner sind nicht komprimiert: Ihr Komprimierungsattribut gibt neuen Dateien und Unterordnern nur einen Standardkomprimierungsstatus.

Zusätzliche Information

Die NTFS-Dateisystem-Volumes unterstützen die Dateikomprimierung auf Dateibasis. Der vom NTFS-Dateisystem verwendete Dateikomprimierungsalgorithmus ist die Lempel-Ziv-Komprimierung. Dies ist ein verlustfreier Komprimierungsalgorithmus, bei dem beim Komprimieren und Dekomprimieren der Datei keine Daten verloren gehen. Bei verlustbehafteten Komprimierungsalgorithmen wie JPEG gehen bei jeder Datenkomprimierung und -dekomprimierung einige Daten verloren.

Auf dem NTFS-Dateisystem wird die Komprimierung transparent ausgeführt. Dies bedeutet, dass es verwendet werden kann, ohne dass Änderungen an vorhandenen Anwendungen erforderlich sind.

Wenn Sie eine Datei komprimieren, die größer als 30 Gigabyte ist, schlägt die Komprimierung möglicherweise fehl.

Quelle: Dateikomprimierung und -dekomprimierung

Die Komprimierungsalgorithmen in NTFS unterstützen Clustergrößen von bis zu 4 KB. Wenn die Clustergröße auf einem NTFS-Volume mehr als 4 KB beträgt, ist keine der NTFS-Komprimierungsfunktionen verfügbar.

Quelle: Datei- und Ordnerkomprimierung

Weitere Lektüre

und31415
quelle
12

Im Allgemeinen ist dies nicht möglich, wie in der Antwort von and31415 angegeben .

Microsoft hat jedoch einige neue NTFS-Komprimierungsoptionen und -Algorithmen in Windows 10 hinzugefügt. Daher gibt es jetzt eine Möglichkeit, das Komprimierungsverhältnis zu ändern:

COMPACT [/C | /U] [/S[:dir]] [/A] [/I] [/F] [/Q] [/EXE[:algorithm]]
        [/CompactOs[:option] [/WinDir:dir]] [filename [...]]
...
  /EXE       Use compression optimized for executable files which are read
             frequently and not modified.  Supported algorithms are:
             XPRESS4K  (fastest) (default)
             XPRESS8K
             XPRESS16K
             LZX       (most compact)

Die neuen Algorithmen sind für die neue Compact OS-Funktion vorgesehen (wie Sie in der /CompactOsobigen Option sehen können). Die Idee ist, schreibgeschützte Dateien, Sicherungsdateien und Systemdateien, auf die weniger häufig zugegriffen wird, mit dem höchsten Verhältnis zu komprimieren . Die Wiederherstellungspartition wird entfernt und die komprimierte Datei wird dann sowohl für die Ausführung (wenn es sich bereits um die neueste Version handelt) als auch für den Wiederherstellungszweck verwendet

Der LZX-Algorithmus ist bei der Archivierung sehr effizient . Und obwohl es sich bei Name und Beschreibung der Option nur um "ausführbare Dateien" handelt, kann die Option auf alle Dateien angewendet werden

E:\test>compact /a

 Listing E:\test\
 New files added to this directory will not be compressed.

  1050909 :   1050909 = 1.0 to 1   sometext.txt

...

E:\test>compact /c /exe:lzx sometext.txt

 Compressing files in E:\test\

sometext.txt          1050909 :    176128 = 6.0 to 1 [OK]

1 files within 1 directories were compressed.
1,050,909 total bytes of data are stored in 176,128 bytes.
The compression ratio is 6.0 to 1.

Anders als beim alten Algorithmus wird jedoch keine direkte Bearbeitung unterstützt , sodass beim Zurückschreiben in die Datei die Komprimierung aufgehoben wird.

E:\test>echo x >> sometext.txt

E:\test>compact /a

 Listing E:\test\
 New files added to this directory will not be compressed.

  1050913 :   1050913 = 1.0 to 1   sometext.txt

Ein wichtiger Hinweis ist, dass Sie den Ordner nicht so einstellen können, dass er neue Dateien markiert, die mit diesen neuen Algorithmen automatisch komprimiert werden sollen , da dies im Hilfeteil von compact(Hervorhebung von mir) angegeben ist.

  /C         Compresses the specified files.  Directories will be marked
             so that files added afterward will be compressed ***unless /EXE
             is specified***.
  /U         Uncompresses the specified files.  Directories will be marked
             so that files added afterward will not be compressed.  If
             /EXE is specified, only files compressed as executables will
             be uncompressed; if this is omitted, only NTFS compressed
             files will be uncompressed.

Wenn Sie sie daher für Sicherungsdateien verwenden möchten, müssen Sie möglicherweise ein Skript ausführen, um sie nach dem Sichern oder nach einiger Zeit in regelmäßigen Abständen manuell zu komprimieren

Leider ist dies neu in Windows 10, daher kann es nicht in älteren Versionen verwendet werden. Allerdings NTFS-3g es jedoch zwingend nötig , deshalb werden Sie nicht haben Problem , das es von Linux zugreifen. Wenn Sie Windows 10 nicht verwenden, können Sie Linux Live USB oder Windows 10 PE ausführen, um diese Dateien zu öffnen

phuclv
quelle
2

Sie können die Komprimierungsrate durch Apps von Drittanbietern erhöhen. Das beste Beispiel ist zipmagic.co. Ich habe es ein Jahr lang ohne Probleme auf meinem Laptop verwendet. Beachten Sie jedoch, dass für die Verwendung der NTFS- oder Zipmagic-Komprimierung eine SSD-Festplatte erforderlich ist, da durch die Komprimierung die Festplatte vollständig fragmentiert und unbrauchbar wird! Wenn Sie ein SSD-Laufwerk haben, können Sie es genießen!

Behrouz.M
quelle
0

Ich würde empfehlen, für diesen Zweck einen Archivierer wie 7-zip oder Winrar zu verwenden. Mit Winrar ist es sogar möglich, auf eine Datei zuzugreifen, die sich in einem Archivierungsprogramm befindet. Beachten Sie, dass zuerst das gesamte Archiv extrahiert wird, bevor auf die Datei zugegriffen werden kann, und dass das Archiv mit Änderungen aktualisiert wird, wenn Sie die Datei schließen und speichern. Dies kann den gesamten Prozess verlangsamen, vorausgesetzt, es handelt sich um ein Backup, das in Ordnung sein sollte.

Beachten Sie, dass dies keine vollständige Sicherungslösung ist. Nur so kann Platz gespart werden.

Darüber hinaus gibt es ein Programm, das 7z- und rar-Archive als virtuelles Laufwerk bereitstellen kann: http://www.winarchiver.com/virtual-drive.htm

LPChip
quelle
6
Das in meinem Fall komprimierte NTFS-Laufwerk wird als plattformübergreifender Sicherungsspeicher verwendet und enthält TAR-Dateien. Linux-Archivierer können Archive nicht aktualisieren, wenn sie in einem komprimierten Format wie 7z oder xz vorliegen. NTFS führt die Komprimierung im laufenden Betrieb für Linux Tar Archiver unsichtbar durch.
Al Berger