Cartelle compresse NTFS: è possibile modificare il rapporto di compressione?


16

A quanto pare, Windows comprime le cartelle compresse NTFS con il rapporto di compressione più basso possibile. Sebbene ciò possa essere utile per aumentare la velocità e ridurre il carico della CPU, per i file a cui si accede raramente (cartelle di backup) sarebbe più sensato avere la possibilità di aumentare il rapporto di compressione. Ci sono alcuni parametri che possono essere modificati per raggiungere questo obiettivo?



2
Dicono del "formato di compressione": "Qualsiasi altro valore indica che un file è compresso, utilizzando il formato di compressione specificato dal valore dello stato di compressione". Non ho trovato il significato di questo "formato" e come è impostato.
Al Berger,

Risposte:


13

Risposta breve

No, al momento non è possibile.

Risposta lunga

I file e le cartelle 1 vengono compressi e decompressi passando un FSCTL_SET_COMPRESSIONcodice di controllo e uno stato di compressione alla funzione DeviceIoControl API . Lo stato di compressione può essere uno dei seguenti:

COMPRESSION_FORMAT_NONE = 0
COMPRESSION_FORMAT_DEFAULT = 1
COMPRESSION_FORMAT_LZNT1 = 2

Qualsiasi valore diverso da zero indica che l'elemento di destinazione verrà compresso. Dalla documentazione ufficiale:

L'algoritmo di compressione LZNT1 è l'unico algoritmo di compressione implementato. Di conseguenza, l'algoritmo di compressione LZNT1 viene utilizzato come DEFAULTmetodo di compressione.

Fonte: codice di controllo FSCTL_SET_COMPRESSION

L'algoritmo LZNT1 è progettato per la velocità e non è possibile impostare un livello di compressione personalizzato.

1 Le cartelle non sono effettivamente compresse: il loro attributo di compressione fornisce solo uno stato di compressione predefinito a nuovi file e sottocartelle.

Informazioni aggiuntive

I volumi del file system NTFS supportano la compressione dei file su base file individuale. L'algoritmo di compressione file utilizzato dal file system NTFS è la compressione Lempel-Ziv. Questo è un algoritmo di compressione senza perdita di dati , il che significa che non vengono persi dati durante la compressione e la decompressione del file, al contrario di algoritmi di compressione con perdita di dati come JPEG, in cui alcuni dati vengono persi ogni volta che si verificano compressione e decompressione dei dati.

Sul file system NTFS, la compressione viene eseguita in modo trasparente. Ciò significa che può essere utilizzato senza richiedere modifiche alle applicazioni esistenti.

Se si comprime un file di dimensioni superiori a 30 gigabyte, la compressione potrebbe non riuscire.

Fonte: compressione e decompressione dei file

Gli algoritmi di compressione in NTFS sono progettati per supportare cluster di dimensioni fino a 4 KB. Quando la dimensione del cluster è maggiore di 4 KB su un volume NTFS, nessuna delle funzioni di compressione NTFS è disponibile.

Fonte: compressione di file e cartelle

Ulteriori letture


11

Generalmente non è possibile, come indicato nella risposta di and31415 .

Tuttavia Microsoft ha aggiunto alcune nuove opzioni e algoritmi di compressione NTFS in Windows 10, quindi ora c'è un modo per modificare il rapporto di compressione:

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)

I nuovi algoritmi sono previsti per la nuova funzionalità Compact OS (come puoi vedere /CompactOsnell'opzione sopra). L'idea è di comprimere i file di sistema di sola lettura, backup e accesso meno frequente con il rapporto più elevato. La partizione di ripristino viene rimossa e il file compresso verrà quindi utilizzato sia per l'esecuzione (se è già l'ultima versione) sia per lo scopo di recupero

L'algoritmo LZX è abbastanza efficiente nell'archiviazione. E nonostante il nome e la descrizione dell'opzione riguardino tutti i "file eseguibili", l'opzione può essere applicata a qualsiasi file

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.

Tuttavia, diversamente dal vecchio algoritmo, non supportano l'editing al volo , quindi la scrittura nel file lo decomprime.

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 è che non è possibile impostare la cartella in modo che i nuovi file vengano compressi automaticamente usando questi nuovi algoritmi , perché come indicato nella parte di aiuto compact(enfasi sulla mia)

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

Pertanto, se si desidera utilizzarli per i file di backup, potrebbe essere necessario eseguire uno script per comprimerlo manualmente dopo il backup o periodicamente dopo qualche tempo

Purtroppo questo nuovo in Windows 10, quindi non può essere utilizzato nelle versioni precedenti. Tuttavia NTFS-3g lo supporta , quindi non avrai problemi ad accedervi da Linux. Se non usi Windows 10, puoi aprire un live USB Linux o Windows 10 PE per aprire quei file


2

Puoi aumentare il rapporto di compressione con app di terze parti. Il primo esempio è zipmagic.co l' ho usato sul mio laptop per un anno senza alcun problema. Ma nota che l'uso della compressione NTFS o Zipmagic richiede un disco rigido SSD perché la compressione renderà il tuo disco totalmente frammentato e lo renderà inutile! Se hai un'unità SSD, vai avanti e divertiti!


0

Vorrei consigliare di utilizzare un archiviatore come 7-zip o Winrar per questo scopo. Con Winrar è anche possibile accedere a un file che si trova all'interno di un archiviatore. Si noti che estrarrà prima l'intero archivio prima di poter accedere al file e aggiornerà l'archivio con le modifiche quando si chiude e si salva nel file. Questo può rallentare l'intero processo, ma dato che si tratta di un backup che dovrebbe andare bene.

Si noti che questa non è una soluzione di backup completo. È solo un modo per risparmiare spazio.

Inoltre, esiste un programma che può montare archivi 7z e rar come unità virtuale: http://www.winarchiver.com/virtual-drive.htm


6
L'unità compressa NTFS nel mio caso viene utilizzata come memoria di backup multipiattaforma e contiene file tar. Gli archivi Linux non possono aggiornare gli archivi quando sono in formato compresso come 7z o xz. NTFS esegue la compressione al volo invisibilmente per l'archiviatore Tar Linux.
Al Berger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.