Dossiers compressés NTFS: est-il possible de modifier le taux de compression?

19

Il semble que Windows comprime les dossiers compressés NTFS avec le taux de compression le plus bas possible. Bien que cela puisse être bon pour augmenter la vitesse et diminuer la charge du processeur, pour les fichiers auxquels on accède rarement (dossiers de sauvegarde), il serait plus judicieux d'avoir la possibilité d'augmenter le taux de compression. Y a-t-il des paramètres qui peuvent être modifiés pour y parvenir?

Al Berger
la source
2
Ils disent à propos du "format de compression": "Toute autre valeur indique qu'un fichier est compressé, en utilisant le format de compression spécifié par la valeur de l'état de compression." Je n'ai pas trouvé ce que signifie ce "format" et comment il est défini.
Al Berger

Réponses:

14

Réponse courte

Non, ce n'est pas possible pour le moment.

Longue réponse

Les fichiers et dossiers 1 sont compressés et décompressés en passant un FSCTL_SET_COMPRESSIONcode de contrôle et un état de compression à la fonction DeviceIoControl API . L'état de compression peut être l'un des suivants:

COMPRESSION_FORMAT_NONE = 0
COMPRESSION_FORMAT_DEFAULT = 1
COMPRESSION_FORMAT_LZNT1 = 2

Toute valeur différente de zéro signifie que l'élément cible va être compressé. De la documentation officielle:

L'algorithme de compression LZNT1 est le seul algorithme de compression implémenté. Par conséquent, l'algorithme de compression LZNT1 est utilisé comme DEFAULTméthode de compression.

Source: code de contrôle FSCTL_SET_COMPRESSION

L'algorithme LZNT1 est conçu pour la vitesse, et il n'y a aucun moyen de définir un niveau de compression personnalisé.

1 Les dossiers ne sont pas réellement compressés: leur attribut de compression ne donne un état de compression par défaut qu'aux nouveaux fichiers et sous-dossiers.

Information additionnelle

Les volumes du système de fichiers NTFS prennent en charge la compression de fichiers sur une base individuelle. L'algorithme de compression de fichiers utilisé par le système de fichiers NTFS est la compression Lempel-Ziv. Il s'agit d'un algorithme de compression sans perte, ce qui signifie qu'aucune donnée n'est perdue lors de la compression et de la décompression du fichier, contrairement aux algorithmes de compression avec perte tels que JPEG, où certaines données sont perdues à chaque fois que la compression et la décompression des données se produisent.

Sur le système de fichiers NTFS, la compression est effectuée de manière transparente. Cela signifie qu'il peut être utilisé sans nécessiter de modifications des applications existantes.

Si vous compressez un fichier dont la taille est supérieure à 30 gigaoctets, la compression peut échouer.

Source: compression et décompression de fichiers

Les algorithmes de compression dans NTFS sont conçus pour prendre en charge des tailles de cluster allant jusqu'à 4 Ko. Lorsque la taille du cluster est supérieure à 4 Ko sur un volume NTFS, aucune des fonctions de compression NTFS n'est disponible.

Source: compression de fichiers et de dossiers

Lectures complémentaires

et31415
la source
12

Généralement, ce n'est pas possible, comme indiqué dans la réponse de and31415 .

Cependant, Microsoft a ajouté de nouvelles options et algorithmes de compression NTFS dans Windows 10, il existe donc maintenant un moyen de modifier le taux de compression:

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)

Les nouveaux algorithmes sont destinés à la nouvelle fonctionnalité Compact OS (comme vous pouvez le voir dans l' /CompactOsoption ci-dessus). L'idée est de compresser les fichiers système en lecture seule, de sauvegarde et moins fréquemment consultés avec le ratio le plus élevé. La partition de récupération est supprimée et le fichier compressé sera ensuite utilisé à la fois pour l'exécution (s'il s'agit déjà de la dernière version) et pour la récupération

L'algorithme LZX est assez efficace pour l'archivage. Et malgré le nom et la description de l'option, il s'agit de "fichiers exécutables", l'option peut être appliquée à tous les fichiers

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.

Cependant, contrairement à l'ancien algorithme, ils ne prennent pas en charge l'édition à la volée , donc la réécriture dans le fichier le décompresse.

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

Une note importante est que vous ne pouvez pas définir le dossier pour marquer les nouveaux fichiers à compresser automatiquement en utilisant ces nouveaux algorithmes , car comme indiqué dans la partie d'aide de compact(accentuation du mien)

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

Par conséquent, si vous souhaitez les utiliser pour des fichiers de sauvegarde, vous devrez peut-être exécuter un script pour compresser manuellement après la sauvegarde ou périodiquement après un certain temps

Malheureusement, cette nouveauté de Windows 10 ne peut donc pas être utilisée dans les anciennes versions. Cependant, NTFS-3g le prend en charge , vous n'aurez donc aucun problème à y accéder depuis Linux. Si vous n'utilisez pas Windows 10, vous pouvez exécuter un Linux live USB ou Windows 10 PE pour ouvrir ces fichiers

phuclv
la source
2

Vous pouvez augmenter le taux de compression par des applications tierces. Le premier exemple est zipmagic.co Je l'ai utilisé sur mon ordinateur portable pendant un an sans aucun problème. Mais notez que l'utilisation de la compression NTFS ou Zipmagic nécessite un disque dur SSD car la compression rendra votre disque totalement fragmenté et le rendra inutile! Si vous avez un disque SSD, alors allez-y et profitez-en!

Behrouz.M
la source
0

Je conseillerais d'utiliser un archiveur tel que 7-zip ou Winrar à cet effet. Avec Winrar, il est même possible d'accéder à un fichier qui se trouve dans un archiveur. Notez qu'il va d'abord extraire l'archive entière avant qu'il puisse accéder au fichier, et il mettra à jour l'archive avec des modifications lorsque vous fermez et enregistrez dans le fichier. Cela peut ralentir l'ensemble du processus, mais étant donné qu'il s'agit d'une sauvegarde qui devrait être correcte.

Notez que ce n'est pas une solution de sauvegarde complète. Ce n'est qu'un moyen d'économiser de l'espace.

En plus de cela, il existe un programme qui peut monter des archives 7z et rar en tant que lecteur virtuel: http://www.winarchiver.com/virtual-drive.htm

LPChip
la source
6
Le lecteur compressé NTFS dans mon cas est utilisé comme stockage de sauvegarde multiplateforme et contient des fichiers tar. Les archiveurs Linux ne peuvent pas mettre à jour les archives lorsqu'elles sont au format compressé tel que 7z ou xz. NTFS effectue la compression à la volée de manière invisible pour l'archiveur Linux Tar.
Al Berger