Cookie di statistica e di pubblicità
Usiamo cookie di statistica e di pubblicità, entrambi inviati a Google. Rifiutare non cambia niente di quello che vedi.Leggi la pagina sulla privacy
Qui converti 7Z in GZ gratis e senza account: trascina il file qui sopra e in un paio di secondi il risultato è pronto da scaricare. Il file viaggia cifrato fino al nostro server, viene convertito lì e viene cancellato appena il lavoro finisce.
Fino a 100 file alla volta. Formati diversi insieme non sono un problema.
Vengono convertiti uno dopo l’altro e scaricati insieme in uno ZIP.
7Z in GZ
La ragione di questa conversione sta a valle. Un agente di build scarica artefatti e li estrae, uno script di deploy si aspetta un payload che possa essere messo in pipe, una cache di pacchetti indicizza tarball gzip, un amministratore di sistema eseguirà un comando e non vuole sentir parlare di installare prima un archiviatore.
Il 7Z è un formato eccellente e nessuna di queste infrastrutture presume che esista. Convertire non è un’ammissione che sia peggiore ; è il riconoscimento che la cosa dall’altra parte è stata scritta anni fa contro gzip, dipende da molte altre, e non cambierà per adattarsi a un singolo archivio. Discutere costa più dei megabyte, e la conversione richiede secondi. Dove si controllano entrambi i capi il calcolo è diverso, ma il motivo abituale per trovarsi su questa pagina è che se ne controlla esattamente uno.
Il GZ, definito da RFC 1952 nel maggio 1996, comprime esattamente un byte stream. Il nostro registro lo registra come formato di streaming con un singolo membro e elenca l’assenza di una struttura di directory tra i problemi noti — nessun nome, nessun percorso, nessun permesso vive da nessuna parte in un file gzip.
Il 7Z è l’opposto sotto ogni aspetto : un contenitore con il proprio indice di voci, le proprie checksum per voce e la propria crittografia. Passare dall’uno all’altro richiede dunque un passaggio intermedio, e quel passaggio è TAR. I contenuti vengono disposti come tarball che porta tutto ciò che gzip non può registrare, e gzip comprime quel tarball come un singolo oggetto. Nulla della disposizione è specifico di questo convertitore — è ciò che `.tar.gz` ha significato da prima che uno dei due formati coinvolti fosse scritto, ed è il motivo per cui la strumentazione all’altro capo riconoscerà il risultato senza che gli si dica nulla sulla sua provenienza.
LZMA2 in un 7Z codifica una ripetizione come un riferimento a qualcosa fino a 64 MB prima e lo fa con un codificatore di intervallo. DEFLATE in gzip fa riferimento agli ultimi 32 KB e codifica con Huffman. Duemila volte meno portata, e una codifica meno efficiente di ciò che trova.
Lo strato tar preserva almeno il vantaggio che vale la pena conservare : gzip comprime l’intero tarball come uno stream continuo, quindi le ripetizioni che attraversano i confini dei file restano visibili, esattamente come lo erano per il 7Z. Ciò che non può fare è vedere abbastanza lontano da usarne molte. Il risultato pratico è un file chiaramente più grande, più visibilmente su raccolte di file di testo simili, mentre su un archivio di fotografie o video i due approdano vicini perché nessuno dei due compressori ha più nulla su cui lavorare.
Il GZ è l’unico formato di archivio nel nostro registro contrassegnato come streaming, e quel flag è il motivo per cui l’intero internet funziona con gzip. Uno stream gzip può essere decompresso dalla parte anteriore man mano che i byte arrivano, senza dover prima vedere la fine del file.
È ciò che fa funzionare `curl … | tar -xz`, e ciò che consente a un agente di build di estrarre un artefatto mentre lo sta ancora scaricando, invece che dopo. Un 7Z non può farlo : la struttura dell’archivio deve essere letta prima che i membri possano essere localizzati, quindi il file deve atterrare da qualche parte completo prima che qualsiasi cosa possa essere spacchettata. Per una pipeline, questa differenza vale più dei megabyte che costa.
Il nostro registro indica il supporto del browser per gzip come universale, il che è vero in un senso che vale la pena esplicitare : i browser negoziano gzip come codifica di trasferimento e decomprimono le risposte in modo invisibile. È lo stesso formato applicato al canale invece che a un file su disco, ed è anche il motivo per cui un browser salva un download `.gz` intatto invece di spacchettarlo silenziosamente.
La stessa ubiquità vale sulla riga di comando. Ogni distribuzione Linux, ogni installazione macOS e ogni immagine container costruita su una di esse ha gzip ; lo stesso non si può dire di xz su un’immagine minimale, e certamente non di 7-Zip. Una base deliberatamente vuota non ha né l’uno né l’altro — le immagini `scratch` di Docker e quelle distroless di Google non distribuiscono un binario gzip — il che vale la pena verificarlo invece di darlo per scontato. Quando il requisito è «deve funzionare su qualunque cosa ci sia all’altro capo», questo è l’argomento, ed è il motivo per cui questa coppia esiste.
Il download prende il nome originale più l’estensione di destinazione, quindi `build.7z` torna come `build.gz` anche se il contenuto è un tarball gzip. La maggior parte degli strumenti Unix lo capisce dai byte, e alcuni script e web server no.
Rinominare in `.tar.gz`, o in `.tgz`, che il nostro registro elenca come lo stesso formato con una grafia più breve. Non costa nulla e rimuove un’intera classe di confusione a valle — compreso il caso classico di qualcuno che lo gunzippa, trova un tar, e presume che la conversione sia andata storta.
La compressione solida è la proprietà che ha reso piccolo il 7Z, ed è anche la proprietà che rende la conversione macchinosa. Poiché i membri sono uno stream continuo, raggiungere uno qualunque di essi significa decomprimere ciò che lo precede, quindi la conversione spacchetta l’intero archivio prima di scrivere un singolo byte di tar.
Ecco perché il limite di sessanta secondi per job e la guardia sull’espansione a 2 GB contano di più su questa coppia che su, per dire, una sorgente tar. Un 7Z ben compresso è un piccolo caricamento che può rappresentare una quantità di lavoro molto grande, e le guardie leggono ciò che l’archivio dichiara di sé prima che qualsiasi cosa venga scritta su disco, invece di scoprirlo a metà.
Questa conversione gira sul nostro convertitore, non nel browser. Il 7Z viene caricato su una connessione cifrata, estratto da 7-Zip, archiviato in tar, compresso in gzip e rinviato ; il caricamento, il tarball intermedio e l’output vengono tutti cancellati quando il lavoro termina, in una directory di lavoro residente in memoria che viene scartata con il container.
Il piano gratuito accetta 25 MB per file. Gli archivi cifrati falliscono immediatamente con un messaggio invece di restare sospesi, perché all’estrattore viene deliberatamente passata una password vuota, e un archivio che si rivela vuoto riceve una frase secca invece di un download valido ma inutile.
Se il tarball verrà recuperato e scritto su disco per intero prima che qualsiasi cosa lo tocchi, il vantaggio di streaming di gzip non vale nulla e il suo rapporto di compressione più debole è una pura perdita a ogni download. Convertire il 7Z in XZ mantiene la famiglia LZMA che l’archivio stava già usando, produce un file molto più piccolo, e non costa nulla in un flusso di lavoro che non avrebbe mai messo in pipe nulla.
Lo scambio funziona anche nell’altro verso, e vale la pena enunciarlo invece di darlo per scontato : xz richiede più memoria per decomprimere perché il decodificatore conserva il dizionario, non è sempre presente su un’immagine container deliberatamente minimale, e non può essere consumato dalla parte anteriore dello stream. Scegliere gzip per le pipeline e per i target che non si controllano, xz per i download e le release in cui il file viene recuperato molto più spesso di quanto venga prodotto. Entrambi sono costruiti qui dall’identico tarball, quindi la decisione riguarda solo quale wrapper ci va intorno.
Lo strato TAR registra una modalità, un utente e un gruppo per ciascun membro, ed è il motivo per cui gli strumenti di packaging vogliono i tarball. Ciò che non può fare è recuperare valori che non c’erano mai : quei campi vengono riempiti dall’estrazione sul nostro convertitore, non dalla macchina in cui i file sono stati creati, quindi trattarli come non specificati piuttosto che come preservati.
Per un artefatto di build di solito è innocuo, e per qualsiasi cosa verrà eseguita non lo è. Uno script che perde il bit eseguibile fallisce in fase di esecuzione con un errore che punta allo script invece che all’archivio che lo portava, il che è un’ora davvero irritante da spendere. Se la pipeline dipende dai permessi, impostarli nella fase di build dopo l’estrazione invece di fidarsi di un archivio che li abbia portati con sé — è buona pratica indipendentemente da quale convertitore abbia prodotto il tarball.
| 7Z | GZ | |
|---|---|---|
| Nome completo | Archivio 7-Zip | Archivio Gzip |
| Estensione del file | .7z | .gz, .tgz |
| Tipo di media | application/x-7z-compressed | application/gzip |
| Compressione | Senza perdita — non si butta via niente | Senza perdita — non si butta via niente |
| Prima pubblicazione | 1999 | 1992 |
| Specifica | — | RFC 1952 |
| Licenza | Standard aperto | Standard aperto |
| Situazione attuale | Attuale | Attuale |
| Si apre nel browser | Nessun browser | Nessun browser |
| Valutato al suo posto | ZIP, XZ | BZ2, XZ, ZIP |
Non si scarta nulla. 7Z e GZ salvano il contenuto senza perdita: la conversione cambia la confezione, non la qualità, e si può ripetere senza che i danni si accumulino.
GZ comprime un singolo flusso e non può contenere una cartella. È proprio per questo che GZ viene di solito abbinato a un formato di archivio: l'archivio raccoglie i file, GZ comprime il risultato.
7-Zip e Keka leggono sia 7Z sia GZ, quindi puoi confrontare il risultato con l'originale senza un secondo programma.
GZ lavora su 32 KB alla volta contro 16 MB di 7Z: la ripetizione deve cadere tutta dentro questo spazio perché possa essere compressa via. Da lì viene la differenza di compressione e per questo è il più rapido dei due.
GZ risale al 1992, descritto in RFC 1952. gzip, 7-Zip e Keka lo leggono.
Sì: questa conversione ha bisogno di un software che in un browser non può girare. Il file viaggia cifrato fino al nostro server, viene cancellato appena il lavoro finisce e il risultato dopo 60 minuti. Il lavoro lo fa 7-Zip, l’archiviatore, nella sua forma da riga di comando.
Sì, fino a 100 conversioni al giorno per file fino a 25 MB. Quell’unico limite esiste perché questa conversione gira su un server che paghiamo noi. Per il resto qui non c’è niente di limitato, e la filigrana non c’è in nessun caso. Il limite esiste perché 7-Zip ha bisogno di una nostra macchina per girare.
No. GZ conserva lo stesso contenuto senza buttare via niente: il risultato è identico in qualità all’originale. I file escono identici byte per byte. Quello che non sopravvive è ciò che il contenitore sapeva *su* di loro e non ciò che teneva *dentro* di loro: una password e, su alcuni formati, i permessi e le date originali.
GZ comprime un singolo flusso e non può contenere una cartella. È proprio per questo che GZ viene di solito abbinato a un formato di archivio: l'archivio raccoglie i file, GZ comprime il risultato.
Non si scarta nulla. 7Z e GZ salvano il contenuto senza perdita: la conversione cambia la confezione, non la qualità, e si può ripetere senza che i danni si accumulino.