Il formato RAR (Roshal Archive) è un formato di file di archivio proprietario sviluppato da Eugene Roshal. È stato rilasciato per la prima volta nel 1993 e da allora è diventato una scelta popolare per la compressione e l'archiviazione dei dati grazie alla sua compressione efficiente, al supporto per più volumi, al ripristino degli errori e alla crittografia avanzata. Il formato utilizza una combinazione di algoritmi di compressione senza perdita, tra cui LZSS, PPM e codifica Huffman, per ottenere elevati rapporti di compressione preservando al contempo l'integrità dei dati.
Un archivio RAR è costituito da una serie di "blocchi" che contengono file compressi, directory e metadati. L'archivio inizia con un blocco di marcatura, che identifica il file come un archivio RAR e specifica la versione dell'archivio. Dopo il blocco di marcatura, l'archivio contiene un blocco di intestazione principale che fornisce informazioni generali sull'archivio, come la dimensione totale, il numero di volumi e il metodo di crittografia utilizzato (se presente).
Ogni file compresso all'interno dell'archivio viene memorizzato come un blocco di intestazione file seguito da uno o più blocchi di dati compressi. Il blocco di intestazione file contiene metadati sul file, come nome, dimensione, timestamp, attributi e checksum CRC32. I blocchi di dati compressi contengono i dati effettivi del file compresso, che possono essere suddivisi in più blocchi se necessario.
RAR utilizza un approccio di archiviazione solida, il che significa che i file vengono compressi insieme come un singolo flusso di dati continuo, piuttosto che essere compressi individualmente. Questo approccio può portare a rapporti di compressione più elevati, in particolare per raccolte di file simili, poiché il compressore può sfruttare le ridondanze tra i file. Tuttavia, gli archivi solidi possono essere meno resistenti al danneggiamento dei dati, poiché un singolo errore può influenzare più file.
Per garantire l'integrità dei dati, RAR impiega un sistema di record di ripristino. I record di ripristino sono blocchi speciali che contengono informazioni ridondanti sulla struttura dell'archivio e sui metadati dei file. In caso di danneggiamento dei dati, questi record possono essere utilizzati per ricostruire le parti danneggiate dell'archivio. Il numero e la dimensione dei record di ripristino possono essere configurati dall'utente durante la creazione dell'archivio.
RAR supporta archivi multi-volume, che consentono di suddividere archivi di grandi dimensioni in parti più piccole e gestibili. Ogni volume in un archivio multi-volume è un file RAR separato con il proprio blocco di marcatura e intestazione, ma con informazioni aggiuntive che indicano la sua posizione all'interno del set. Gli archivi multi-volume possono essere utili per archiviare o trasferire grandi set di dati su supporti di memorizzazione con capacità limitata, come CD o DVD.
Il formato RAR offre potenti funzionalità di crittografia per proteggere i dati sensibili. Gli archivi possono essere crittografati utilizzando l'algoritmo AES (Advanced Encryption Standard) con una chiave a 128 o 256 bit. Quando un archivio viene crittografato, tutti i dati e i metadati del file sono protetti ed è necessaria una password per estrarre il contenuto. RAR supporta anche un algoritmo di crittografia proprietario più recente chiamato RAR5, progettato per essere più sicuro del vecchio metodo AES.
Una delle caratteristiche distintive del formato RAR è il supporto per la compressione di file divisi. Questa funzione consente di suddividere file di grandi dimensioni in parti più piccole prima della compressione, che possono quindi essere estratte e riassemblate in modo trasparente dal decompressore. La compressione di file divisi può essere utile per ottimizzare l'archiviazione o la trasmissione di file di grandi dimensioni su reti a larghezza di banda limitata o connesse a intermittenza.
Oltre alle sue capacità di compressione e archiviazione, RAR supporta anche diverse funzionalità avanzate, come commenti di archivio, elenchi di file protetti da password e verifica dell'autenticità tramite firme digitali. I commenti di archivio consentono agli utenti di allegare testo descrittivo a un archivio, che può essere utilizzato per fornire ulteriori informazioni o istruzioni per l'estrazione del contenuto. Gli elenchi di file protetti da password mantengono nascosti i nomi dei file crittografati fino a quando non viene fornita la password corretta. La verifica della firma digitale consente agli utenti di assicurarsi che un archivio provenga da una fonte attendibile e non sia stato manomesso.
Sebbene il formato RAR offra molti vantaggi in termini di efficienza di compressione, protezione dei dati e ricchezza di funzionalità, presenta alcuni inconvenienti. Il più significativo di questi è che RAR è un formato proprietario e le implementazioni ufficiali del compressore e del decompressore sono closed-source. Ciò può limitare l'interoperabilità e rendere più difficile per gli sviluppatori di terze parti creare strumenti compatibili. Inoltre, alcune delle funzionalità più avanzate di RAR, come l'algoritmo di crittografia RAR5, potrebbero non essere supportate da tutti i decompressori.
Nonostante queste limitazioni, RAR rimane un formato di archivio ampiamente utilizzato e ben supportato, in particolare sui sistemi Windows. La sua compressione efficiente, il robusto ripristino degli errori e le potenti funzionalità di crittografia lo rendono una scelta solida per l'archiviazione e la protezione di dati importanti. Con un uso corretto dei record di ripristino, degli archivi multi-volume e dei backup regolari, gli archivi RAR possono fornire un archivio affidabile a lungo termine per file e set di dati critici.
La compressione dei file riduce la ridondanza in modo che le stesse informazioni occupino meno bit. Il limite superiore di quanto si può andare è governato dalla teoria dell'informazione: per la compressione senza perdita, il limite è l'entropia della fonte (vedi il teorema della codifica di sorgente di Shannon e il suo articolo originale del 1948 “Una teoria matematica della comunicazione”). Per la compressione con perdita, il compromesso tra velocità e qualità è catturato dalla teoria tasso-distorsione.
La maggior parte dei compressori ha due fasi. In primo luogo, un modello predice o espone la struttura nei dati. In secondo luogo, un codificatore trasforma tali previsioni in modelli di bit quasi ottimali. Una famiglia di modellazione classica è Lempel-Ziv: LZ77 (1977) e LZ78 (1978) rilevano sottostringhe ripetute ed emettono riferimenti invece di byte grezzi. Sul lato della codifica, la codifica di Huffman (vedi l'articolo originale del 1952) assegna codici più brevi a simboli più probabili. La codifica aritmetica e la codifica a intervalli sono alternative a grana più fine che si avvicinano al limite dell'entropia, mentre i moderni Sistemi Numerici Asimmetrici (ANS) ottengono una compressione simile con implementazioni veloci basate su tabelle.
DEFLATE (usato da gzip, zlib e ZIP) combina LZ77 con la codifica di Huffman. Le sue specifiche sono pubbliche: DEFLATE RFC 1951, wrapper zlib RFC 1950, e formato file gzip RFC 1952. Gzip è strutturato per lo streaming ed esplicitamente non tenta di fornire accesso casuale. Le immagini PNG standardizzano DEFLATE come unico metodo di compressione (con una finestra massima di 32 KiB), secondo le specifiche PNG “Metodo di compressione 0… deflate/inflate… al massimo 32768 byte” e W3C/ISO PNG 2a Edizione.
Zstandard (zstd): un compressore generico più recente progettato per rapporti elevati con decompressione molto veloce. Il formato è documentato in RFC 8878 (anche mirror HTML) e nelle specifiche di riferimento su GitHub. Come gzip, il frame di base non mira all'accesso casuale. Uno dei superpoteri di zstd sono i dizionari: piccoli campioni dal tuo corpus che migliorano drasticamente la compressione su molti file piccoli o simili (vedi documenti del dizionario python-zstandard e l'esempio funzionante di Nigel Tao). Le implementazioni accettano dizionari sia “non strutturati” che “strutturati” (discussione).
Brotli: ottimizzato per i contenuti web (ad es. font WOFF2, HTTP). Mescola un dizionario statico con un core di entropia LZ+ simile a DEFLATE. La specifica è RFC 7932, che nota anche una finestra scorrevole di 2WBITS−16 con WBITS in [10, 24] (da 1 KiB−16 B a 16 MiB−16 B) e che non tenta l'accesso casuale. Brotli spesso batte gzip sul testo web decodificando rapidamente.
Contenitore ZIP: ZIP è un archivio di file che può memorizzare voci con vari metodi di compressione (deflate, store, zstd, ecc.). Lo standard de facto è l'APPNOTE di PKWARE (vedi portale APPNOTE, una copia ospitata, e panoramiche LC Formato file ZIP (PKWARE) / ZIP 6.3.3).
LZ4 punta alla velocità grezza con rapporti modesti. Vedi la sua pagina del progetto (“compressione estremamente veloce”) e il formato del frame. È ideale per cache in memoria, telemetria o percorsi caldi in cui la decompressione deve essere quasi alla velocità della RAM.
XZ / LZMA spingono per la densità (ottimi rapporti) con una compressione relativamente lenta. XZ è un contenitore; il lavoro pesante è tipicamente svolto da LZMA/LZMA2 (modellazione simile a LZ77 + codifica a intervalli). Vedi formato file .xz, la specifica LZMA (Pavlov), e le note del kernel Linux su XZ Embedded. XZ di solito comprime meglio di gzip e spesso compete con i moderni codec ad alto rapporto, ma con tempi di codifica più lenti.
bzip2 applica la Trasformata di Burrows-Wheeler (BWT), move-to-front, RLE e la codifica di Huffman. È tipicamente più piccolo di gzip ma più lento; vedi il manuale ufficiale e le pagine man (Linux).
La “dimensione della finestra” è importante. I riferimenti DEFLATE possono guardare indietro solo di 32 KiB (RFC 1951 e il limite di 32 KiB di PNG notato qui). La finestra di Brotli varia da circa 1 KiB a 16 MiB (RFC 7932). Zstd regola la finestra e la profondità di ricerca per livello (RFC 8878). I flussi di base gzip/zstd/brotli sono progettati per la decodifica sequenziale; i formati di base non promettono l'accesso casuale, sebbene i contenitori (ad es. indici tar, framing a blocchi o indici specifici del formato) possano stratificarlo.
I formati di cui sopra sono senza perdita: è possibile ricostruire i byte esatti. I codec multimediali sono spesso con perdita: scartano dettagli impercettibili per raggiungere bitrate più bassi. Nelle immagini, il JPEG classico (DCT, quantizzazione, codifica entropica) è standardizzato in ITU-T T.81 / ISO/IEC 10918-1. Nell'audio, MP3 (MPEG-1 Layer III) e AAC (MPEG-2/4) si basano su modelli percettivi e trasformate MDCT (vedi ISO/IEC 11172-3, ISO/IEC 13818-7, e una panoramica MDCT qui). Con perdita e senza perdita possono coesistere (ad es. PNG per le risorse dell'interfaccia utente; codec Web per immagini/video/audio).
Teoria: Shannon 1948 · Velocità-distorsione · Codifica: Huffman 1952 · Codifica aritmetica · Codifica a intervalli · ANS. Formati: DEFLATE · zlib · gzip · Zstandard · Brotli · LZ4 frame · Formato XZ. Stack BWT: Burrows–Wheeler (1994) · manuale bzip2. Media: JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.
In conclusione: scegli un compressore che si adatti ai tuoi dati e ai tuoi vincoli, misura su input reali e non dimenticare i vantaggi derivanti dai dizionari e dal framing intelligente. Con la giusta accoppiata, puoi ottenere file più piccoli, trasferimenti più veloci e app più scattanti, senza sacrificare la correttezza o la portabilità.
La compressione dei file è un processo che riduce le dimensioni di un file o di più file, tipicamente per risparmiare spazio di archiviazione o accelerare la trasmissione su una rete.
La compressione dei file funziona identificando e rimuovendo la ridondanza nei dati. Utilizza algoritmi per codificare i dati originali in uno spazio minore.
I due principali tipi di compressione dei file sono la compressione senza perdita e la compressione con perdita. La compressione senza perdita permette di ripristinare perfettamente il file originale, mentre la compressione con perdita consente una riduzione di dimensioni più significativa a costo di una certa perdita nella qualità dei dati.
Un esempio popolare di uno strumento di compressione dei file è WinZip, che supporta più formati di compressione tra cui ZIP e RAR.
Con la compressione senza perdita, la qualità rimane inalterata. Tuttavia, con la compressione con perdita, può esserci una diminuzione notevole della qualità perché elimina dati meno importanti per ridurre più significativamente la dimensione del file.
Sì, la compressione dei file è sicura in termini di integrità dei dati, specialmente con la compressione senza perdita. Tuttavia, come qualsiasi file, i file compressi possono essere presi di mira da malware o virus, quindi è sempre importante avere in atto un software di sicurezza affidabile.
Quasi tutti i tipi di file possono essere compressi, inclusi file di testo, immagini, audio, video e software. Tuttavia, il livello di compressione ottenibile può variare significativamente tra i tipi di file.
Un file ZIP è un tipo di formato di file che utilizza la compressione senza perdita per ridurre le dimensioni di uno o più file. Più file in un file ZIP sono effettivamente raggruppati insieme in un unico file, il che facilita anche la condivisione.
Tecnicamente, sì, anche se la riduzione aggiuntiva delle dimensioni potrebbe essere minima o addirittura controproducente. Comprimere un file già compresso potrebbe a volte aumentare le sue dimensioni a causa dei metadati aggiunti dall'algoritmo di compressione.
Per decomprimere un file, di solito ti serve uno strumento di decompressione o di estrazione, come WinZip o 7-Zip. Questi strumenti possono estrarre i file originali dal formato compresso.