Pastas compactadas NTFS: é possível ajustar a taxa de compactação?

19

Como parece, o Windows compacta as pastas compactadas NTFS com a menor taxa de compactação possível. Embora isso seja bom para aumentar a velocidade e diminuir a carga da CPU, para os arquivos que são acessados ​​raramente (pastas de backup), seria mais sensato ter a possibilidade de aumentar a taxa de compactação. Existem alguns parâmetros que podem ser ajustados para conseguir isso?

Al Berger
fonte
2
Eles dizem sobre "formato de compactação": "Qualquer outro valor indica que um arquivo está compactado, usando o formato de compactação especificado pelo valor do estado de compactação". Não encontrei o que esse "formato" significa e como está definido.
Al Berger

Respostas:

14

Resposta curta

Não, não é possível no momento.

Resposta longa

Arquivos e pastas 1 são compactados e descompactados, passando um FSCTL_SET_COMPRESSIONcódigo de controle e um estado de compactação para a função DeviceIoControl API . O estado da compactação pode ser um dos seguintes:

COMPRESSION_FORMAT_NONE = 0
COMPRESSION_FORMAT_DEFAULT = 1
COMPRESSION_FORMAT_LZNT1 = 2

Qualquer valor diferente de zero significa que o item de destino será compactado. A partir da documentação oficial:

O algoritmo de compactação LZNT1 é o único algoritmo de compactação implementado. Como resultado, o algoritmo de compactação LZNT1 é usado como DEFAULTmétodo de compactação.

Fonte: código de controle FSCTL_SET_COMPRESSION

O algoritmo LZNT1 foi projetado para velocidade, e não há como definir um nível de compactação personalizado.

1 As pastas não são realmente compactadas: seu atributo de compactação apenas fornece um estado de compactação padrão para novos arquivos e subpastas.

Informação adicional

Os volumes do sistema de arquivos NTFS oferecem suporte à compactação de arquivos individualmente. O algoritmo de compactação de arquivos usado pelo sistema de arquivos NTFS é a compactação Lempel-Ziv. Esse é um algoritmo de compactação sem perdas, o que significa que nenhum dado é perdido durante a compactação e descompactação do arquivo, em oposição a algoritmos de compactação com perdas, como JPEG, onde alguns dados são perdidos sempre que a compactação e descompactação de dados ocorrem.

No sistema de arquivos NTFS, a compactação é realizada de forma transparente. Isso significa que pode ser usado sem exigir alterações nos aplicativos existentes.

Se você compactar um arquivo maior que 30 gigabytes, a compactação poderá não ter êxito.

Fonte: Compactação e descompactação de arquivos

Os algoritmos de compactação no NTFS foram projetados para suportar tamanhos de cluster de até 4 KB. Quando o tamanho do cluster é maior que 4 KB em um volume NTFS, nenhuma das funções de compactação NTFS está disponível.

Fonte: Compactação de arquivos e pastas

Leitura adicional

and31415
fonte
12

Geralmente não é possível, conforme indicado na resposta do and31415 .

No entanto, a Microsoft adicionou algumas novas opções e algoritmos de compactação NTFS no Windows 10, então agora há uma maneira de alterar a taxa de compactação:

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)

Os novos algoritmos destinam-se ao novo recurso Compact OS (como você pode ver na /CompactOsopção acima). A idéia é compactar arquivos de sistema somente leitura, backup e acesso com menos frequência e com a maior proporção. A partição de recuperação é removida e o arquivo compactado será usado para executar (se já é a versão mais recente) e para fins de recuperação

O algoritmo LZX é bastante eficiente no arquivamento. E, apesar do nome e da descrição da opção serem "arquivos executáveis", a opção pode ser aplicada a qualquer arquivo

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.

No entanto, diferentemente do algoritmo antigo, eles não suportam edição imediata , portanto, a gravação no arquivo o descompacta.

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

Uma observação importante é que você não pode definir a pasta para marcar novos arquivos a serem compactados automaticamente usando esses novos algoritmos , porque, conforme indicado na parte de ajuda de compact(ênfase minha)

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

Portanto, se você deseja usá-los para arquivos de backup, pode ser necessário executar um script para compactar manualmente após o backup ou periodicamente após algum tempo

Infelizmente, este novo no Windows 10, portanto, não pode ser usado em versões mais antigas. No entanto, o NTFS-3g o suporta , portanto você não terá problemas para acessá-lo no Linux. Se você não usa o Windows 10, pode executar um USB ao vivo do Linux ou Windows 10 PE para abrir esses arquivos

phuclv
fonte
2

Você pode aumentar a taxa de compactação usando aplicativos de terceiros. O principal exemplo é zipmagic.co. Eu o uso no meu laptop há um ano sem nenhum problema. Mas observe que o uso da compactação NTFS ou Zipmagic precisa de um disco rígido SSD, pois a compactação tornará sua unidade totalmente fragmentada e a tornará inútil! Se você tem drive SSD, então vá em frente e divirta-se!

Behrouz.M
fonte
0

Aconselho usar um arquivador como o 7-zip ou o Winrar para esse fim. Com o Winrar, é ainda possível acessar um arquivo que está dentro de um arquivador. Observe que ele primeiro extrairá todo o arquivo morto antes de poder acessar o arquivo e atualizará o arquivo morto com modificações quando você fechar e salvar o arquivo. Isso pode tornar o processo inteiro lento, mas, considerando que é um backup, tudo bem.

Observe que essa não é uma solução de backup completo. É apenas uma maneira de economizar espaço.

Além disso, existe um programa que pode montar arquivos 7z e rar como uma unidade virtual: http://www.winarchiver.com/virtual-drive.htm

LPChip
fonte
6
A unidade compactada NTFS no meu caso é usada como armazenamento de backup entre plataformas e contém arquivos tar. Os arquivadores Linux não podem atualizar arquivos quando estão em formato compactado, como 7z ou xz. O NTFS executa a compactação em tempo real de forma invisível para o arquivador Tar do Linux.
Al Berger