Ripara ora
- Trascina il file
- La riparazione avviene in locale
- 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.