Carpetas comprimidas NTFS: ¿es posible ajustar la relación de compresión?

19

Como parece, Windows comprime las carpetas comprimidas NTFS con la relación de compresión más baja posible. Si bien esto puede ser bueno para aumentar la velocidad y disminuir la carga de la CPU, para los archivos a los que se accede raramente (carpetas de respaldo) sería más sensato tener la posibilidad de aumentar la relación de compresión. ¿Hay algunos parámetros que pueden modificarse para lograr esto?

Al Berger
fuente
2
Dicen sobre "formato de compresión": "Cualquier otro valor indica que un archivo está comprimido, utilizando el formato de compresión especificado por el valor del estado de compresión". No encontré qué significa este "formato" y cómo está configurado.
Al Berger

Respuestas:

14

Respuesta corta

No, no es posible en este momento.

Respuesta larga

Los archivos y las carpetas 1 se comprimen y descomprimen pasando un FSCTL_SET_COMPRESSIONcódigo de control y un estado de compresión a la función DeviceIoControl API . El estado de compresión puede ser uno de los siguientes:

COMPRESSION_FORMAT_NONE = 0
COMPRESSION_FORMAT_DEFAULT = 1
COMPRESSION_FORMAT_LZNT1 = 2

Cualquier valor distinto de cero significa que el elemento de destino se comprimirá. De la documentación oficial:

El algoritmo de compresión LZNT1 es el único algoritmo de compresión implementado. Como resultado, el algoritmo de compresión LZNT1 se utiliza como DEFAULTmétodo de compresión.

Fuente: código de control FSCTL_SET_COMPRESSION

El algoritmo LZNT1 está diseñado para la velocidad, y no hay forma de establecer un nivel de compresión personalizado.

1 Las carpetas no están realmente comprimidas: su atributo de compresión solo proporciona un estado de compresión predeterminado a los nuevos archivos y subcarpetas.

Información Adicional

Los volúmenes del sistema de archivos NTFS admiten la compresión de archivos de forma individual. El algoritmo de compresión de archivos utilizado por el sistema de archivos NTFS es la compresión Lempel-Ziv. Este es un algoritmo de compresión sin pérdida, lo que significa que no se pierden datos al comprimir y descomprimir el archivo, a diferencia de los algoritmos de compresión con pérdida como JPEG, donde se pierden algunos datos cada vez que se produce la compresión y descompresión de datos.

En el sistema de archivos NTFS, la compresión se realiza de forma transparente. Esto significa que puede usarse sin requerir cambios en las aplicaciones existentes.

Si comprime un archivo de más de 30 gigabytes, es posible que la compresión no tenga éxito.

Fuente: Compresión y descompresión de archivos

Los algoritmos de compresión en NTFS están diseñados para admitir tamaños de clúster de hasta 4 KB. Cuando el tamaño del clúster es superior a 4 KB en un volumen NTFS, ninguna de las funciones de compresión NTFS está disponible.

Fuente: Compresión de archivos y carpetas

Otras lecturas

y31415
fuente
12

Generalmente no es posible, como se indica en la respuesta de y31415 .

Sin embargo, Microsoft ha agregado algunas nuevas opciones y algoritmos de compresión NTFS en Windows 10, por lo que ahora hay una manera de cambiar la relación de compresión:

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)

Los nuevos algoritmos están destinados a la nueva función Compact OS (como puede ver en la /CompactOsopción anterior). La idea es comprimir archivos de sistema de solo lectura, copia de seguridad y de acceso menos frecuente con la relación más alta. La partición de recuperación se elimina y el archivo comprimido se usará tanto para la ejecución (si ya es la última versión) como para el propósito de recuperación

El algoritmo LZX es bastante eficiente en el archivo. Y a pesar de que el nombre y la descripción de la opción tienen que ver con "archivos ejecutables", la opción se puede aplicar a cualquier archivo

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.

Sin embargo, a diferencia del algoritmo anterior, no admiten la edición sobre la marcha , por lo que escribir de nuevo en el archivo lo descomprime.

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

Una nota importante es que no puede configurar la carpeta para marcar nuevos archivos que se comprimirán automáticamente usando esos nuevos algoritmos , porque como se indica en la parte de ayuda de compact(énfasis mío)

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

Por lo tanto, si desea utilizarlos para archivos de copia de seguridad, es posible que deba ejecutar un script para comprimir manualmente después de realizar una copia de seguridad o periódicamente después de un tiempo

Desafortunadamente, esto es nuevo en Windows 10, por lo tanto, no se puede usar en versiones anteriores. Sin embargo, NTFS-3g lo admite , por lo tanto, no tendrá problemas para acceder desde Linux. Si no usa Windows 10, puede ejecutar un USB en vivo de Linux o Windows 10 PE para abrir esos archivos

phuclv
fuente
2

Puede aumentar la relación de compresión con aplicaciones de terceros. El primer ejemplo es zipmagic.co Lo he usado en mi computadora portátil durante un año sin ningún problema. ¡Pero tenga en cuenta que el uso de la compresión NTFS o Zipmagic necesita un disco duro SSD porque la compresión hará que su unidad esté totalmente fragmentada y la haga inútil! Si tienes una unidad SSD, ¡adelante y disfruta!

Behrouz.M
fuente
0

Aconsejaría utilizar un archivador como 7-zip o Winrar para este propósito. Con Winrar, incluso es posible acceder a un archivo que está dentro de un archivador. Tenga en cuenta que primero extraerá todo el archivo antes de que pueda acceder al archivo, y actualizará el archivo con modificaciones cuando cierre y guarde en el archivo. Esto puede hacer que todo el proceso sea lento, pero dado que es una copia de seguridad que debería estar bien.

Tenga en cuenta que esta no es una solución de copia de seguridad completa. Es solo una forma de ahorrar espacio.

Además de eso, hay un programa que puede montar archivos 7z y rar como una unidad virtual: http://www.winarchiver.com/virtual-drive.htm

LPChip
fuente
66
El disco comprimido NTFS en mi caso se usa como almacenamiento de respaldo multiplataforma y contiene archivos tar. Los archivadores de Linux no pueden actualizar los archivos cuando están en formato comprimido, como 7z o xz. NTFS realiza la compresión sobre la marcha de forma invisible para el archivador Tar de Linux.
Al Berger