"Unexpected end of archive"

Questo errore non significa quasi mai che l'archivio sia "danneggiato" in qualche modo misterioso. Significa che il file è corto — gli ultimi byte non sono mai arrivati. Tutto ciò che è stato memorizzato prima dell'interruzione di solito resta leggibile, e recuperarlo non richiede di consegnare l'archivio a un server.

Il tuo file non lascia mai il tuo dispositivo — la riparazione avviene nel browser. 0 byte caricati.

Your data is the big block — usually intact. What breaks is the small index. Repair rebuilds it.

Drop a file here or browseTap to choose a file

ZIP · Office · PDF · video · JPG · PNG · RAR/7z · SQLite — repaired right here in your browser. Nothing is uploaded

0 bytes uploadedFree: 3 repairs/day — up to 500 MB video, 100 MB docs & archives, 50 MB photos. Free download. Single repair €5.90. No account required.

Ripara ora

  1. Trascina il file
  2. La riparazione avviene in locale
  3. Scarica il risultato

WinRAR, 7-Zip e il comando unzip da riga di comando generano tutti una qualche variante di "Unexpected end of archive" per la stessa ragione di fondo: leggono il file aspettandosi più byte di quanti ce ne siano davvero. Il download si è bloccato, una copia da una chiavetta USB è stata interrotta troppo presto, oppure una sincronizzazione sul cloud si è fermata a metà. Trascina l'archivio qui sopra e lo strumento ne ispeziona la struttura reale nel browser — individua le voci scritte per intero prima del punto di troncamento ed estrae quelle, invece di rifiutare l'intero file perché gli manca la coda.

Che cosa significa l'errore a livello del formato di file

Un file ZIP non è un unico blocco continuo — è una serie di voci di file locali seguite da una directory centrale proprio alla fine. Ogni voce inizia con la firma PK\x03\x04, porta con sé il proprio nome, metodo di compressione e dimensione, e a seguire i dati compressi (deflate). Dopo l'ultima voce viene la directory centrale (record PK\x01\x02), e il file termina con il record End Of Central Directory, PK\x05\x06. Quell'EOCD è l'indice: dice all'estrattore quanti file esistono e dove inizia ciascuno.

Ecco il punto. L'indice vive proprio alla fine del file. Quando un download o una copia si interrompe, la coda è esattamente ciò che va perso — così l'estrattore si posiziona dove dovrebbe trovarsi l'EOCD, trova dati (o nulla) invece della firma PK\x05\x06, e segnala "Unexpected end of archive." L'archivio non è stravolto; semplicemente gli manca il suo indice, ed eventualmente l'ultimo file o due.

RAR e 7z falliscono allo stesso modo per la stessa ragione. Un RAR mantiene intestazioni di blocco e, alla fine, un marcatore di fine archivio; un .7z tiene il proprio database di intestazioni nella coda del file e di norma comprime molti file insieme in un unico flusso solido. In ogni caso, i metadati di cui lo strumento ha bisogno per primi sono i metadati che un troncamento distrugge per primi.

Che cosa esce ancora, e come funziona il recupero

Poiché ogni voce ZIP si descrive da sé, l'intera directory centrale è ridondante per l'estrazione — è un indice, non i dati. Lo strumento ignora l'EOCD mancante e invece percorre il file in avanti dall'inizio, catturando ogni intestazione locale PK\x03\x04 che riesce a trovare e decomprimendo il flusso deflate che segue finché i byte reggono. Qualsiasi file scritto per intero prima dell'interruzione torna intatto; l'unico file rimasto a cavallo del punto di troncamento può tornare parziale o non tornare affatto. Tutto questo gira come puro TypeScript nella tua scheda — senza installare alcuna utility di archiviazione, senza inviare nulla da nessuna parte.

RAR e 7z sono più vincolati ma non sono un caso perso. In un RAR, i file memorizzati prima del troncamento continuano a decodificarsi, e un RAR creato con un record di recupero si ripara nettamente meglio perché quel record è progettato per ricostruire i blocchi mancanti. Un .7z è il caso fragile: senza record di recupero e con compressione solida che concatena i file tra loro, perdere la coda può rompere la decompressione di tutto ciò che viene dopo l'ultimo blocco completo. Lo strumento recupera ciò che i blocchi sopravvissuti consentono ed è onesto quando un flusso solido non può essere continuato.

Il limite onesto: i byte dopo l'interruzione sono persi

Nessun software può recuperare dati che non sono mai stati nel file. Se il download si è fermato al 60 %, l'ultimo 40 % dei dati compressi non esiste sul tuo disco, e niente — né questo strumento, né la riparazione integrata di WinRAR, né una suite di recupero a pagamento — può inventarlo di nuovo. La soluzione per questo è riscaricare o ricopiare l'archivio dalla sorgente in modo da avere i byte completi.

Ciò che possiamo fare in modo affidabile è evitare che un archivio arrivato a metà sia una perdita totale. Se nove file su dieci sono arrivati prima che la connessione cadesse, non c'è motivo di perdere i nove mentre si insegue il decimo. E poiché l'intera operazione avviene nel tuo browser, un archivio che potrebbe contenere documenti finanziari, codice sorgente o documenti personali non viene mai copiato su un server sconosciuto solo per dare un'occhiata all'interno — puoi osservare la scheda Rete e confermare che non esce nemmeno un byte.

Cosa può e cosa non può riparare

Può riparare

  • Uno ZIP che ha perso la sua directory centrale / EOCD a causa di un download troncato — le voci precedenti all'interruzione vengono estratte percorrendo le intestazioni locali
  • Singoli file all'interno di uno ZIP scaricato parzialmente che erano stati scritti per intero prima che la connessione cadesse
  • Archivi RAR in cui i file memorizzati prima del punto di troncamento si decodificano ancora
  • Archivi RAR che portano un record di recupero (questi si riparano decisamente meglio)
  • Archivi 7z fino all'ultimo blocco di compressione completo sopravvissuto

Non può riparare

  • Qualsiasi file i cui dati compressi si trovavano dopo il punto di troncamento — quei byte non sono sul tuo disco
  • Un flusso solido 7z oltre il suo ultimo blocco intatto (i file successivi nella catena non possono essere decompressi)
  • Archivi che sono anche cifrati/protetti da password quando la password non viene fornita
  • Un download così corto che è arrivato solo un frammento della prima voce

Se una riparazione fallisce, ti diciamo perché (dati mancanti rispetto a struttura danneggiata), e non ti viene mai addebitato nulla per una riparazione fallita.

Domande frequenti

"Unexpected end of archive" significa che l'intero file è danneggiato?

Di solito no. Quasi sempre significa che il file è troncato — più corto di quanto dovrebbe perché un download o una copia si è interrotto. I dati scritti prima dell'interruzione di solito stanno bene; sono interessati solo l'indice finale e gli eventuali file rimasti oltre l'interruzione.

Posso tirare fuori alcuni dei file se gli altri mancano?

Sì, è esattamente lo scopo del recupero. In uno ZIP lo strumento percorre le intestazioni di file locali dall'inizio ed estrae ogni voce scritta per intero, così un archivio scaricato a metà restituisce comunque i suoi file intatti invece di fallire del tutto.

Perché 7-Zip ripara il mio RAR ma non il mio .7z?

Gli archivi RAR possono essere creati con un record di recupero pensato esattamente per questo, e i blocchi RAR si decodificano in modo indipendente. Un .7z spesso usa la compressione solida che concatena i file in un unico flusso con la sua tabella di intestazioni proprio alla fine — perdere la coda può rompere tutto ciò che viene dopo l'ultimo blocco completo.

L'archivio è riservato. Viene caricato per controllarlo?

No. L'archivio viene letto dal tuo disco ed elaborato nella scheda del tuo browser; non viene trasmesso nulla. Puoi aprire la scheda Rete e confermare che non esce nemmeno un byte del file dalla tua macchina — utile quando lo ZIP contiene documenti che preferiresti non copiare sul server di uno sconosciuto.

Correlati: Ripara un archivio ZIP · "Compressed folder is invalid" · Verifica la promessa di zero upload