Cómo comprimir una carpeta NTFS usando herramientas de Linux

Cómo comprimir una carpeta NTFS usando herramientas de Linux

Tengo un problema: mi C:\Windows\winsxscarpeta de Windows 7 está creciendo mucho (20 GB) y me gustaría comprimirla usando la herramienta incorporada del Explorador (Propiedad de carpeta -> Avanzado -> comprimir), pero ya sabes, Windows en realidad no me permitan hacer eso porque esos archivos winsxs están protegidos por un usuario especial llamadoInstalador de confianza. Entonces me gustaría hacerlo en Linux. La búsqueda en Internet muestra algunas pistas sobre ntfs-3g, pero no puedo encontrar un ejemplo concreto de cómo comprimir una carpeta NTFS, así que me gustaría preguntar aquí.

Supongamos que mi partición arrancada en Knoppix Linux y Windows C: se ha montado en /mnt/winc, entonces, ¿qué comando debo usar para lograr el objetivo?

¿O hay alguna manera de hacerlo sin un entorno Linux?

Respuesta1

Esto es posible sin Linux y siempre lo hago después de crear una nueva instalación. Lo acabo de hacer con una instalación de Windows 10 Enterprise 21H2 que ahora tiene 4,6 GB después de la compresión.

La forma en que lo hago es completar la instalación y luego reiniciar nuevamente en el medio de instalación (ya sea una memoria USB o un DVD). Una vez que se haya cargado, no es necesario que continúe con los cuadros de diálogo de instalación reales a menos que esté intentando comprimir una unidad que necesita un controlador antes de que esté disponible para el instalador. Sabrá si lo hace, porque entonces ya lo habrá proporcionado manualmente durante la instalación inicial. Si esto no tiene sentido para usted, simplemente ignore esta parte y pase al siguiente párrafo. Si necesita hacer esto, simplemente continúe con los pasos de instalación hasta seleccionar la partición a instalar, donde debe cargar su controlador.

En cualquier escenario, presione Shift+F10para que aparezca un símbolo del sistema. Ahora descubra qué unidad es la unidad de instalación. Probablemente no sea C: ya que probablemente sea la unidad de instalación. Tendrás que comenzar en la primera unidad y enumerar su contenido hasta que encuentres la correcta. Es decir, escriba C:e ingrese, luego diringrese y examine el resultado. Luego continúa con D:, E:, etc. hasta encontrarlo. La unidad que está buscando tendrá las carpetas "Usuarios", "Windows" y "Archivos de programa", etc., y si tiene más de una instalación de Windows en la computadora, puede consultar el espacio libre informado en la unidad. Conduce para adivinar cuál es. En mi última instalación, la unidad de Windows era la unidad F.

Una vez que haya determinado la unidad, puede usarla compact.exepara comprimirla. No tendrá que preocuparse por comprimir accidentalmente archivos no seguros, ya que compactse encargará de ello automáticamente. No comprimirá el cargador de arranque, por ejemplo, ni el archivo de paginación. Ahora, la forma más rápida de hacerlo, que también ahorra menos espacio, es esta, que es el equivalente a usar Explorer (excepto que en este símbolo del sistema, comprimirá todos los archivos que se pueden comprimir). Asegúrate de haber navegado hasta la unidad que deseas comprimir (F: en mi último caso) y escribe esto:

compact /c /i /s:\

/csolo significa comprimir. /ies ignorar los errores. Recibirá errores, por ejemplo, no puede comprimir Documents and Settingsen Windows 10 porque en realidad no es una carpeta, sino una unión que apunta a Users. Sin /i, compactse detendría después de tal error. /s:\significa procesar todo en el directorio \(donde se encuentra, es decir, la raíz de la unidad) y todos los subdirectorios que contiene.

Como se mencionó, esta forma de hacerlo funcionará igual que en Explorer, excepto que comprimirá muchos más archivos que Explorer no porque no tiene acceso a ellos y/o están en uso. En mi instalación actual, resultó en una relación de compresión de 1,7:1.

Sin embargo, si desea ir un poco más al extremo con el ahorro de espacio, hay una bandera /exeque le indica compactque use una compresión más eficiente que está destinada a archivos del tipo de escritura una vez y lectura frecuente, generalmente ejecutables (p. ej. explorer.exe), de ahí el nombre. Se comprimirátodoarchivos con el algoritmo elegido, por lo que ahorra espacio en todos los archivos, no sólo en los ejecutables. El algoritmo más eficiente es lzx, que cuando se aplicó a mi instalación produjo una relación de compresión de 2,4:1 (en realidad, quiero decir 2,7:1, pero no lo recuerdo bien, pero es significativamente más eficiente que el predeterminado). Sin embargo, requiere que hagas dos ejecuciones: estas:

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

Y luego:

compact /c /i /s:\

Bien, entonces ¿por qué dos carreras?, te preguntarás. Esto se debe a que cuando usa la /exebandera, le indica compactque use un algoritmo de compresión no estándar que NTFS no aplicará de manera predeterminada; debe ejecutar este comando para comprimir con eso. Por extensión, por lo tanto, se niega a marcar carpetas como comprimidas, ya que no puede comprimir automáticamente archivos nuevos con lzx, por lo que, si bien el primer compactcomando comprime todos los archivos en la unidad de manera muy eficiente, deja todas las carpetas sin un indicador de compresión, lo que significa cualquier archivo nuevo o modificado. tampoco se comprimirá.

Tenga en cuenta la adición adicional de la /fbandera. En caso de que ya tenga algunos archivos comprimidos en la unidad (tal vez haya comprimido su carpeta Documentos o algo así), esto obligará a que los archivos ya comprimidos se vuelvan a comprimir con el lzxalgoritmo.

El segundo comando es básicamente el mismo comando que el primero, pero como no usamos /fpara forzar la compresión de nada que ya esté comprimido, el efecto aquí es que omitirá todos los archivos que acabamos de comprimir lzx. pero marque todas las carpetas como comprimidas, para que en el futuro, los archivos nuevos y modificados también se compriman automáticamente.

En resumen, el primer comando comprime todos los archivos de manera muy eficiente y el segundo marca todas las carpetas como comprimidas, de modo que los archivos futuros también se compriman.

Debo señalar que, en primer lugar, este tipo de compresión no es compatible con todas las implementaciones de NTFS. Por ejemplo, en mi dispositivo Linux Mint 20.2 Live, los archivos comprimidos de esta manera no se leerán en absoluto. AFAICT, existe soporte de lectura para versiones más recientes del ntfs-3gcontrolador de código abierto, pero es posible que aún no esté accesible en su distribución. Tampoco sé si el nuevo ntfs3controlador nativo de Linux lo admite. Por parte de Microsoft, parece que también puede ser solo Windows 10 y versiones posteriores, por lo que es posible que no puedas leer dicha unidad desde Windows 7 u 8, por ejemplo. En segundo lugar, debido a que Windows no comprimirá automáticamente archivos nuevos y modificados con estos algoritmos más eficientes, recuerde que cualquier archivo comprimido que se modifique en el futuro se recomprimirá con el algoritmo predeterminado menos eficiente. Sin embargo, si está utilizando Windows 10 o Windows 11, todo funcionará. Simplemente vale la pena considerarlo.

Espero que esto ayude :)

PD: Por supuesto, esto se puede hacer en cualquier momento en cualquier instalación existente. Solo menciono las nuevas instalaciones aquí porque se ha convertido en un hábito para mí hacerlo inmediatamente después de una nueva instalación.

EDITAR: Una pequeña actualización después de que terminé de configurar este nuevo sistema mío y ahora volví a ejecutar todo esto desde el instalador de Windows antes de habilitar BitLocker. El método aquí, nuevamente, fue usar /lzx:exeprimero y luego hacer una segunda ejecución para marcar también todas las carpetas para la compresión. Esto funciona muy bien (ahorré 4 GB adicionales en la unidad del sistema después de la compresión (primero usé el algoritmo de compresión predeterminado porque quería poder modificar el sistema de archivos con Linux, por lo que esto representa un ahorro adicional de 4 GB en comparación con el algoritmo de compresión predeterminado). )), pero luego me sentí confundido porque noté en el Explorador de Windows que muchos archivos no parecían comprimidos. Es decir, no estaban coloreados (habilité "Mostrar archivos NTFS cifrados o comprimidos en color" en la configuración de visualización y muchos archivos no eran azules). Me metí compacten un símbolo del sistema administrativo y no pude cambiar esto. Luego descubrí que en realidad se trata simplemente de la incompetencia clásica de Microsoft: el Explorador de Windows no comprende estos nuevos EXEalgoritmos de compresión, por lo que no mostrará los archivos en azul y, si verifica sus propiedades, tampoco tendrá una marca de verificación en el Caja de compresión bajo avanzado. PERO, mostrará los tamaños correctos en tamaño normal versus tamaño en disco, por lo que el número de "espacio utilizado" será menor. ¡Jebús! XDD

Respuesta2

Los pasos son:

  1. Marcar el directorio para comprimir
  2. Mover los archivos a una ubicación temporal
  3. cp -aLos archivos regresan a su destino original para activar la compresión.

(Por defecto, ntfs-3g habilitaopción de montajecompression.)


# 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

Sin embargo, tenga en cuenta las advertencias (de lantfs-3gpágina):

Cuando compressionse establece la opción de montaje, los archivos creados en un directorio marcado para compresión se crean comprimidos. Permanecen comprimidos cuando se mueven (cambiándoles el nombre) a un directorio normal en el mismo volumen, y los datos que se les agregan después de haberlos movido se comprimen. Por el contrario, los archivos que estaban presentes en un directorio antes de que se marcara para compresión y los archivos movidos desde un directorio que no está marcado para compresión no se comprimen. Copiar un archivo comprimido siempre lo descomprime, solo para comprimirlo nuevamente si el directorio de destino está marcado para compresión.


Para nuevos volúmenes, consulte la -Copción en mkfs.ntfs.

información relacionada