So komprimieren Sie einen NTFS-Ordner mit Linux-Tools

So komprimieren Sie einen NTFS-Ordner mit Linux-Tools

Ich stehe vor einem Problem: Mein Windows 7 C:\Windows\winsxs-Ordner wird sehr groß (20 GB) und ich möchte ihn mit dem im Explorer integrierten Tool komprimieren (Ordnereigenschaften -> Erweitert -> Komprimieren), aber wissen Sie, Windows erlaubt mir das eigentlich nicht, weil diese Winsxs-Dateien durch einen speziellen Benutzer namens geschützt sindVertrauenswürdiger Installer. Ich würde es also gern unter Linux machen. Die Internetsuche zeigt einige Hinweise zu ntfs-3g, aber ich kann kein konkretes Beispiel für die Komprimierung von NTFS-Ordnern finden, deshalb würde ich hier gern fragen.

Angenommen, meine in Knoppix Linux und Windows gebootete Partition C: wurde auf gemountet /mnt/winc. Welchen Befehl muss ich dann verwenden, um das Ziel zu erreichen?

Oder gibt es eine Möglichkeit, dies ohne eine Linux-Umgebung zu tun?

Antwort1

Dies ist auch ohne Linux möglich und ich mache es immer, nachdem ich eine neue Installation erstellt habe. Ich habe es gerade mit einer Windows 10 Enterprise 21H2-Installation gemacht, die nach der Komprimierung jetzt 4,6 GB groß ist.

Ich mache es so, dass ich die Installation abschließe und dann mit dem Installationsmedium (entweder USB-Stick oder DVD) neu starte. Sobald es geladen ist, müssen Sie nicht mehr mit den eigentlichen Installationsdialogen fortfahren, es sei denn, Sie versuchen, ein Laufwerk zu komprimieren, das einen Treiber benötigt, bevor es dem Installationsprogramm zur Verfügung steht. Sie werden es wissen, wenn Sie das tun müssen, denn dann haben Sie ihn bereits manuell während der Erstinstallation bereitgestellt. Wenn Ihnen das keinen Sinn ergibt, ignorieren Sie diesen Teil einfach und fahren Sie mit dem nächsten Absatz fort. Wenn Sie dies tun müssen, fahren Sie einfach mit den Installationsschritten fort, bis Sie die Partition auswählen, auf der Sie die Installation durchführen möchten und auf der Sie Ihren Treiber laden sollten.

Drücken Sie in beiden Fällen, Shift+F10um eine Eingabeaufforderung aufzurufen. Finden Sie nun heraus, welches Laufwerk das Installationslaufwerk ist. Es wird wahrscheinlich nicht C: sein, da dies höchstwahrscheinlich das Installationslaufwerk ist. Sie müssen beim ersten Laufwerk beginnen und dessen Inhalt auflisten, bis Sie das richtige finden. Geben Sie also ein C:und geben Sie ein, dann dirund geben Sie ein und prüfen Sie die Ausgabe. Fahren Sie dann mit D:, E:, usw. fort, bis Sie es gefunden haben. Das gesuchte Laufwerk enthält die Ordner „Benutzer“, „Windows“, „Programme“ usw., und wenn Sie mehr als eine Windows-Installation auf dem Computer haben, können Sie anhand des gemeldeten freien Speicherplatzes auf dem Laufwerk erraten, welches es ist. Bei meiner letzten Installation war das Windows-Laufwerk Laufwerk F.

Sobald Sie das Laufwerk ermittelt haben, können Sie compact.exees komprimieren. Sie müssen sich keine Sorgen machen, dass Sie versehentlich unsichere Dateien komprimieren, da compactdies automatisch erledigt wird. Der Bootloader oder die Auslagerungsdatei werden beispielsweise nicht komprimiert. Der schnellste Weg, der auch weniger Platz spart, ist dieser, der der Verwendung des Explorers entspricht (außer dass Sie in dieser Eingabeaufforderung alle Dateien komprimieren, die komprimiert werden können). Stellen Sie sicher, dass Sie zu dem Laufwerk navigiert sind, das Sie komprimieren möchten (in meinem letzten Fall F:), und geben Sie Folgendes ein:

compact /c /i /s:\

/cbedeutet einfach nur komprimieren. bedeutet, /iFehler zu ignorieren. Sie erhalten Fehler, z. B. können Sie Documents and Settingsin Windows 10 nicht komprimieren, da es sich tatsächlich nicht um einen Ordner, sondern um eine Verknüpfung handelt, die auf verweist Users. Ohne /iwürde compactnach einem solchen Fehler angehalten. /s:\bedeutet, alles im Verzeichnis \(in dem Sie sich befinden, also im Stammverzeichnis des Laufwerks) und alle darin enthaltenen Unterverzeichnisse zu verarbeiten.

Wie erwähnt funktioniert diese Vorgehensweise genauso wie im Explorer, außer dass dabei viel mehr Dateien komprimiert werden, die der Explorer nicht komprimiert, weil Sie keinen Zugriff darauf haben und/oder sie gerade verwendet werden. Bei meiner aktuellen Installation ergab sich ein Komprimierungsverhältnis von 1,7:1.

Wenn Sie jedoch etwas extremer mit der Platzersparnis vorgehen möchten, gibt es ein Flag, /exedas compacteine effizientere Komprimierung anweist, die für Dateien vom Typ „Einmal schreiben, oft lesen“ gedacht ist, normalerweise ausführbare Dateien (z. B. explorer.exe), daher der Name. Es komprimiertalleDateien mit dem gewählten Algorithmus, sodass bei allen Dateien, nicht nur bei ausführbaren Dateien, Platz gespart wird. Der effizienteste Algorithmus ist lzx, der bei meiner Installation eine Komprimierungsrate von 2,4:1 ergab (eigentlich würde ich 2,7:1 sagen, aber ich kann mich nicht mehr genau erinnern, aber es ist deutlich effizienter als der Standard). Sie müssen jedoch zwei Durchläufe durchführen – diese:

compact /c /i /f /exe:lzx /s:\

Und dann:

compact /c /i /s:\

Okay, warum also zwei Durchläufe, fragen Sie sich vielleicht. Das liegt daran, dass Sie mit der Verwendung des /exeFlags compacteinen nicht standardmäßigen Komprimierungsalgorithmus verwenden, den NTFS standardmäßig nicht anwendet – Sie müssen diesen Befehl ausführen, um damit zu komprimieren. In der Folge weigert es sich daher, Ordner als komprimiert zu markieren, da es neue Dateien nicht automatisch mit komprimieren kann. lzxWährend also der erste compactBefehl alle Dateien auf dem Laufwerk sehr effizient komprimiert, lässt er alle Ordner ohne Komprimierungsflag, was bedeutet, dass auch neue oder geänderte Dateien nicht komprimiert werden.

Beachten Sie die zusätzliche Hinzufügung des /fFlags. Falls Sie bereits einige komprimierte Dateien auf dem Laufwerk haben (vielleicht haben Sie Ihren Ordner „Dokumente“ komprimiert oder etwas Ähnliches), werden bereits komprimierte Dateien hierdurch mit dem Algorithmus erneut komprimiert lzx.

Der zweite Befehl ist im Prinzip derselbe Befehl wie der erste weiter oben. Da wir aber nichts /fzur Komprimierung zwingen, was bereits komprimiert ist, werden hier alle Dateien übersprungen, die wir gerade komprimiert haben lzx, aber alle Ordner werden als komprimiert markiert, sodass in Zukunft auch neue und geänderte Dateien automatisch komprimiert werden.

Kurz gesagt, der erste Befehl komprimiert alle Dateien sehr effizient und der zweite markiert alle Ordner als komprimiert, sodass auch zukünftige Dateien komprimiert werden.

Ich sollte zunächst anmerken, dass diese Art der Komprimierung nicht in allen Implementierungen von NTFS unterstützt wird. Auf meinem Linux Mint 20.2 Live-Stick werden beispielsweise auf diese Weise komprimierte Dateien überhaupt nicht gelesen. Soweit ich weiß, gibt es Leseunterstützung für neuere Versionen des Open-Source- ntfs-3gTreibers, aber diese ist in Ihrer Distribution möglicherweise noch nicht verfügbar. Ich weiß ntfs3auch nicht, ob der neue native Linux-Treiber dies unterstützt. Auf der Microsoft-Seite scheint es auch nur Windows 10 und höher zu sein, sodass Sie beispielsweise ein solches Laufwerk möglicherweise nicht von Windows 7 oder 8 aus lesen können. Zweitens: Da Windows neue und geänderte Dateien nicht automatisch mit diesen effizienteren Algorithmen komprimiert, denken Sie daran, dass jede komprimierte Datei, die in Zukunft geändert wird, mit dem weniger effizienten Standardalgorithmus erneut komprimiert wird. Wenn Sie jedoch Windows 10 oder Windows 11 verwenden, wird alles funktionieren. Es ist nur eine Überlegung wert.

Hoffe das hilft :)

PS: Dies kann natürlich jederzeit bei jeder bestehenden Installation durchgeführt werden. Ich erwähne hier nur Neuinstallationen, weil es bei mir zur Gewohnheit geworden ist, dies unmittelbar nach einer Neuinstallation zu tun.

BEARBEITEN: Ein kleines Update, nachdem ich die Einrichtung meines neuen Systems abgeschlossen hatte und nun alles vom Windows-Installationsprogramm aus erneut ausgeführt habe, bevor ich BitLocker aktiviert habe. Die Methode bestand auch hier wieder darin, /lzx:exezuerst zu verwenden und dann einen zweiten Durchlauf durchzuführen, um alle Ordner ebenfalls für die Komprimierung zu markieren. Das funktioniert großartig (hat nach der Komprimierung zusätzliche 4 GB auf dem Systemlaufwerk gespart (ich hatte zuerst den Standardkomprimierungsalgorithmus verwendet, da ich das Dateisystem mit Linux ändern wollte, also sind das 4 GB zusätzliche Einsparungen im Vergleich zum Standardkomprimierungsalgorithmus)), aber dann war ich verwirrt, da ich im Windows Explorer bemerkte, dass viele Dateien nicht komprimiert aussahen. Das heißt, sie waren nicht farbig (ich habe in den Ansichtseinstellungen „Verschlüsselte oder komprimierte NTFS-Dateien in Farbe anzeigen“ aktiviert und viele Dateien waren nicht blau). Ich habe compactin einer administrativen Eingabeaufforderung herumgespielt und konnte dies nicht ändern. Dann habe ich herausgefunden, dass es sich eigentlich nur um klassische Microsoft-Inkompetenz handelt - der Windows Explorer selbst versteht diese neuen EXEKomprimierungsalgorithmen nicht, daher werden die Dateien nicht blau angezeigt, und wenn Sie ihre Eigenschaften überprüfen, wird auch das Komprimierungsfeld unter „Erweitert“ nicht mit einem Häkchen versehen. ABER er zeigt die korrekten Größen in normaler Größe im Vergleich zur Größe auf der Festplatte an, daher ist die Zahl für den „belegten Speicherplatz“ niedriger. Herrgott! XD

Antwort2

Die Schritte sind:

  1. Markieren Sie das Verzeichnis für die Komprimierung
  2. Verschieben Sie die Dateien an einen temporären Speicherort
  3. cp -adie Dateien zurück an ihren ursprünglichen Zielort, um die Komprimierung auszulösen

(Standardmäßig aktiviert ntfs-3gMount-Optioncompression.)


# Mark a directory for compression
setfattr -h -v 0x00000800 -n system.ntfs_attrib_be directory-name

# On small-endian computers when above is not possible
setfattr -h -v 0x00080000 -n system.ntfs_attrib directory-name

Beachten Sie jedoch die Vorbehalte (aus derntfs-3gSeite):

Wenn die Mount-Option compressiongesetzt ist, werden Dateien, die in einem für die Komprimierung markierten Verzeichnis erstellt werden, komprimiert erstellt. Sie bleiben komprimiert, wenn sie (durch Umbenennen) in ein normales Verzeichnis im selben Volume verschoben werden, und an sie angehängte Daten werden komprimiert, nachdem sie verschoben wurden. Umgekehrt werden Dateien, die in einem Verzeichnis vorhanden waren, bevor es für die Komprimierung markiert wurde, und Dateien, die aus einem nicht für die Komprimierung markierten Verzeichnis verschoben wurden, nicht komprimiert. Beim Kopieren einer komprimierten Datei wird diese immer dekomprimiert, nur um sie erneut zu komprimieren, wenn das Zielverzeichnis für die Komprimierung markiert ist.


Sehen Sie sich für neue Bände die -COption in an mkfs.ntfs.

verwandte Informationen