"Unexpected end of archive"

Sei strumenti, sei formulazioni diverse, un unico fatto di fondo: l'archivio è più corto di quanto la sua stessa struttura dichiari. Questa pagina decodifica la formulazione strumento per strumento, mostra esattamente quale marcatore di fine archivio manca in ZIP, RAR, 7z e tar, e poi ti indirizza verso il giusto percorso di recupero — il tutto senza mai consegnare il file a un server.

Questo è un unico messaggio di errore travestito in molti modi. WinRAR dice "Unexpected end of archive"; 7-Zip più spesso dice "Unexpected end of data"; da riga di comando unzip si lamenta di "cannot find zipfile directory"; macOS lancia un criptico "Error 2"; tar segnala "Unexpected EOF in archive." Descrivono tutti la stessa cosa — lo strumento ha letto il file aspettandosi un marcatore strutturale in una posizione nota e ha invece incontrato la fine dei byte. Trascina l'archivio qui sopra e IntactFile ne ispeziona la disposizione reale nel tuo browser, individua le voci scritte per intero prima che il file si esaurisse ed estrae quelle, invece di rifiutare l'intero archivio per una coda mancante.

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.

Trascina qui un file oppure sfogliaTocca per scegliere un file

ZIP · Office · PDF · video · JPG · PNG · RAR/7z · SQLite — riparati proprio qui, nel tuo browser. Non viene caricato nulla

0 byte caricatiGratis: 3 riparazioni/giorno — fino a 50 MB di video, 10 MB di documenti e archivi, 10 MB di foto. Download gratuito. Una riparazione 5,90 €. Senza account.

Ripara ora

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

La formulazione esatta, strumento per strumento

Il messaggio che vedi è un indizio forte su quale strumento e quale formato hai davanti — vale la pena decodificarlo prima di fare qualsiasi altra cosa, perché ognuno fallisce in un punto leggermente diverso.

  • WinRAR — "Unexpected end of archive." Il classico. WinRAR ha raggiunto la fine del file mentre l'intestazione di un blocco o il marcatore di fine archivio dicevano ancora che doveva esserci dell'altro. Vale sia per i .rar sia per gli ZIP che WinRAR apre.
  • 7-Zip — "Unexpected end of data" (a volte "Unexpected end of archive"). 7-Zip distingue un troncamento pulito ("end of data") da una firma sbagliata ("is not archive") da un byte alterato ("Data error"). "End of data" significa in particolare che il flusso si è fermato a metà — un troncamento, non uno scombinamento.
  • Info-ZIP unzip — "cannot find zipfile directory … End-of-central-directory signature not found." unzip cerca all'indietro dalla coda il marcatore PK\x05\x06 e non lo trova mai, quindi non riesce nemmeno a costruire l'elenco dei file. I dati possono essere integri; è l'indice a essere sparito.
  • Esplora risorse di Windows — "The compressed (zipped) folder is invalid." L'estrattore integrato è il meno specifico di tutti. Di solito è la stessa storia dell'EOCD mancante — vedi "Compressed folder is invalid" per quella esatta formulazione.
  • Utility Archivio di macOS — "Error 2 – No such file or directory." Notoriamente opaco: il "file" che non riesce a trovare è il record della central directory che si aspettava alla fine. Stesso troncamento, messaggio unicamente inutile.
  • Python zipfileBadZipFile: File is not a zip file, oppure un errore su .read(). Se l'EOCD manca, zipfile si rifiuta del tutto di aprire; se solo una voce finale è troncata, apre senza problemi e fallisce soltanto quando leggi quel membro.
  • GNU tar / gzip — "Unexpected EOF in archive" / "unexpected end of file." Una struttura del tutto diversa (nessun indice centrale) — trattata più avanti.

Se la tua formulazione è in questo elenco, hai quasi certamente un file corto, non uno scombinato — e il recupero è lo stesso indipendentemente da quale strumento l'ha segnalato.

Dove vive «la fine», formato per formato

Ogni formato di archivio conserva una piccola struttura critica che dice "l'archivio è completo ed ecco dove è indicizzato il suo contenuto". Quella struttura vive in fondo o vicino alla coda del file — che è esattamente la regione che un troncamento distrugge per prima. Sapere quale marcatore manca ti dice quanto è recuperabile.

  • ZIP — End Of Central Directory (PK\x05\x06). Uno ZIP è una sequenza di voci locali (ognuna inizia con PK\x03\x04), poi una central directory di record PK\x01\x02, infine l'EOCD di 22 byte. L'EOCD è l'indice. Gli archivi grandi o oltre i 4 GB aggiungono un record EOCD ZIP64 (PK\x06\x06) e un localizzatore (PK\x06\x07) subito prima. Perdi la coda e perdi l'indice — ma non le voci locali, che si autodescrivono.
  • RAR 4 — blocco di fine archivio (HEAD_TYPE 0x7B). Dopo la firma Rar!\x1A\x07\x00, RAR4 memorizza blocchi decodificabili in modo indipendente e termina con un blocco conclusivo. I file precedenti al taglio si decodificano ancora; un RAR creato con un record di recupero può ricostruire direttamente i blocchi mancanti.
  • RAR 5 — intestazione di fine archivio (header di tipo 5). Firma Rar!\x1A\x07\x01\x00, un formato di intestazione ridisegnato, stessa idea: un'intestazione di fine dedicata che un troncamento rimuove.
  • 7z — lo Start Header punta a un End Header in coda. Dopo la firma 37 7A BC AF 27 1C e due byte di versione c'è uno Start Header di 20 byte che contiene NextHeaderOffset, NextHeaderSize e un CRC — un puntatore al database delle intestazioni proprio alla fine del file. Tronca il file e quel puntatore mira oltre l'ultimo byte. Peggio ancora, .7z usa per impostazione predefinita la compressione solida, concatenando i file in un unico flusso, così una coda perduta può rompere ogni file dopo l'ultimo blocco completo.

Lo schema è universale: i metadati di cui l'estrattore ha bisogno per primi sono memorizzati per ultimi, quindi sono i metadati che un troncamento uccide per primi. Ecco perché "unexpected end" è così comune ed ecco perché i dati stessi di solito sono ancora recuperabili.

.tar e .tar.gz: nessun indice da perdere, un EOF diverso

Tar è quello fuori dagli schemi, e merita una nota a sé perché la diagnosi è diversa. Un .tar non ha alcun indice centrale: è una semplice sequenza di record da 512 byte — un blocco di intestazione per file (l'intestazione ustar con nome, dimensione e una somma di controllo), poi i dati del file riempiti fino al successivo confine di 512 byte. L'archivio è dichiarato concluso da due blocchi consecutivi di 512 byte tutti a zero. Se quei blocchi zero finali non sono mai arrivati, tar stampa "Unexpected EOF in archive" anche se ogni file scritto per intero è perfettamente estraibile — tar percorre semplicemente i record dall'inizio alla fine, quindi recupera tutto fino al byte a cui si è esaurito.

Un .tar.gz (o .tgz) avvolge quel flusso tar in gzip. Un membro gzip è un'intestazione di 10 byte (1F 8B 08 …), il flusso deflate e un trailer di 8 byte che contiene un CRC-32 dei dati non compressi e l'ISIZE (dimensione originale mod 2³²). Troncalo e gzip segnala "unexpected end of file" — decomprime correttamente fino al taglio, poi non ha alcun trailer con cui verificare. Il recupero segue lo stesso principio dello ZIP: decodificare in avanti fin dove i byte integri lo permettono.

Troncamento, interruzione o bit-rot? Dove andare adesso

"Unexpected end" è il sintomo. La causa decide la mossa migliore, e sono tre:

  • Un download del browser che si è bloccato o è stato annullato. Se l'archivio veniva da un link e il trasferimento non è mai finito (un .crdownload/.part rimasto lì, un "Failed – Network error"), la meccanica esatta di quali byte sopravvivono è particolare — vedi un download ZIP interrotto.
  • Un file cloud che sembra completo ma non lo è. Drive, Dropbox e OneDrive possono consegnarti una pagina di errore HTML rinominata .zip, oppure una sincronizzazione parziale — un troncamento che si traveste da corruzione. Per distinguere un file corto da un vero bit-rot, vedi come diagnosticare un archivio cloud danneggiato.
  • L'origine stessa è corta. Se l'originale è davvero privo della sua coda, nessuno strumento può inventare i byte assenti — ma IntactFile estrae comunque tutto ciò che è stato scritto prima del taglio. Trascinalo qui sopra per recuperare le voci integre.

In ogni caso il recupero è identico e gira interamente nella tua scheda: IntactFile ignora il marcatore di fine mancante, scandaglia in avanti dall'inizio del file catturando ogni voce integra e decomprime ciò che i byte sopravvissuti permettono — puro TypeScript, nessuna utility di archiviazione installata, e puoi guardare la scheda Rete confermare che zero byte di un archivio privato lasciano mai la tua macchina.

Cosa può e cosa non può riparare

Può riparare

  • Uno ZIP che ha perso il suo EOCD (PK\x05\x06) per un download troncato — le voci locali integre vengono recuperate scandagliando in avanti
  • Archivi ZIP64 la cui coda PK\x06\x06 / PK\x06\x07 è mancante ma le cui voci sono sopravvissute
  • Archivi RAR in cui i blocchi memorizzati prima del troncamento si decodificano ancora (i RAR con record di recupero si riparano meglio)
  • Archivi 7z fino all'ultimo blocco completo di compressione solida prima del taglio
  • Un .tar privo dei suoi blocchi zero finali, o un .tar.gz troncato prima del trailer gzip — tutto ciò che è stato scritto prima del taglio viene estratto

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 integro (i file successivi nella catena non possono essere decompressi)
  • Archivi 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

Perché WinRAR e 7-Zip formulano questo errore in modo diverso per lo stesso file?

Ogni strumento segnala il punto in cui lui si è arreso. WinRAR si aspetta un blocco di fine archivio e dice "Unexpected end of archive"; 7-Zip distingue un taglio pulito ("Unexpected end of data") da una firma sbagliata o da un byte alterato ("Data error"); unzip non riesce nemmeno a trovare il record di End-Of-Central-Directory. Formulazione diversa, stessa coda mancante.

macOS dice solo "Error 2 – No such file or directory." Cosa manca?

Il «file» che l'Utility Archivio non riesce a trovare è il record della central directory dello ZIP, che dovrebbe stare alla fine dell'archivio. È lo stesso troncamento che segnala ogni altro strumento — macOS lo mostra solo con un messaggio insolitamente inutile.

Un .tar è recuperabile se non ha mai ricevuto la sua conclusione?

Di solito sì. Un tar non ha indice — è una sequenza dall'inizio alla fine di record da 512 byte terminata da due blocchi zero. Se quei blocchi finali mancano, tar si lamenta ma ogni file scritto prima del taglio si estrae comunque in modo pulito, perché tar legge i record in ordine.

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. Apri la scheda Rete e conferma che 0 byte del file lasciano la tua macchina — utile quando l'archivio contiene documenti che preferiresti non copiare sul server di uno sconosciuto.

Correlati: Riparare un archivio ZIP · "Compressed folder is invalid" · Troncamento contro bit-rot nei file cloud