Ottieni una migliore compressione per più file compressi con gzip


3

Ho diverse directory contenenti migliaia di file gzip (nel complesso stiamo parlando di file 1M). Alcuni di questi file sono danneggiati e molti di essi hanno dimensioni davvero ridotte (un paio di KB).

Quasi tutti hanno un contenuto molto simile, quindi comprimendoli tutti insieme dovrebbe migliorare il rapporto di compressione rispetto alla situazione attuale.

Dal momento che raramente sfoglio queste directory e ho solo bisogno di averle in giro per motivi di archiviazione, ho bisogno di un formato altamente disponibile e altamente comprimibile e creare un singolo archivio. Sarebbe bello avere una possibilità di accesso casuale per accedere a file specifici di tanto in tanto senza decomprimere l'intero archivio.

Qual è la migliore strategia qui? Tar è resiliente alla corruzione? Preferirei qualcosa che può essere implementato come one-liner o semplice script bash.


1
Nota: tarnon è un compressore.
Kamil Maciorowski il

nessun file è "resiliente" dalla corruzione.
Keltari,

Risposte:


3

Dopo aver cercato questo, il modo in cui risolverei il problema sarebbe decomprimere tutti i file, creare un elenco di tutte le somme sha256 (o qualunque hash preferiate), quindi comprimere tutti i file in un unico archivio. Sarei propenso a usare un file tar.gz per velocità e facilità d'uso, ma potresti usare zip, o bzip, 7zip, xz o qualcos'altro se desideri un archivio più piccolo. La compressione di tutti i file in uno solo di grandi dimensioni consente di risparmiare parecchio spazio a sé stante.

Al termine, utilizzare 'par2' per creare ridondanza e verifica per il file zippato e eseguire il backup del file insieme ai file .par2. (Non ci ho giocato molto, ma lo scopo di par2 è quello di creare un archivio che crei ridondanza (PARity) per rafforzare l'integrità dei file.


In realtà stavo pensando più o meno alla stessa cosa. Il problema è che probabilmente non ho abbastanza spazio per decomprimere tutti i file in qualsiasi supporto in questo momento (ho dimenticato di aggiungere quello nella descrizione che rappresentano penso a più di 1 TB). È possibile indicare a tar di decomprimere i file al volo durante la creazione dell'archivio? Inoltre, hai esperienza con i formati di archivio che ti consentono di accedere ai file in modo casuale anziché in streaming?
Nopper

@nopper sono i file gzipped o tar.gz - questo fa la differenza
davidgo

i file sono compressi con gzip. Suffix is ​​.gz
nopper

2

Sfortunatamente, non esiste una risposta definitiva a una domanda come questa. Diversi programmi e algoritmi di compressione avranno rapporti di compressione diversi in base ai dati. Se ci fosse un modo per sapere quanto sarà buona la compressione. Se ci fosse, non pensi che sarebbe integrato in tutti i programmi di compressione?

Dici che ci sono migliaia di file da 1 MB, che equivalgono a un numero di gigabyte. Diciamo che hai 5000 file, ovvero 5 GB di dati. Diciamo che zippare su ultra ti fa scendere a 2 GB. Se provi un altro programma e algoritmo, è il 5% migliore (penso che sia una stima elevata), che ti fa risparmiare solo 100 GB. Non molto nel grande schema.

Per quanto riguarda la resilienza dalla corruzione, non esiste nulla del genere. È possibile che un programma di compressione possa gestire la corruzione, come un controllo CRC fallito, meglio di un altro. Nel migliore dei casi, ciò potrebbe significare che solo alcuni dei tuoi dati vengono persi, piuttosto che tutti. Tuttavia, di nuovo, non c'è davvero modo di saperlo. In poche parole, non è possibile sostituire i backup di dati importanti.


Non ho detto che voglio la migliore compressione in generale. Semplicemente migliore dell'algoritmo di compressione modulo stato corrente. Quindi mi aspetto che l'applicazione della stessa compressione gzip su un singolo file tar comporterebbe un rapporto di compressione migliore rispetto alla compressione individuale di più file. Il secondo punto era la ridondanza dei dati. Il suggerimento di @davidgo dovrebbe fare il trucco (par2). Un'altra cosa che sto prendendo in considerazione è la possibilità di avere una capacità di accesso casuale per il formato dell'archivio, in modo da poter estrarre un file specifico senza leggere tutto il contenuto dell'archivio.
Nopper
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.