Ripara ora
- Trascina il file
- La riparazione avviene in locale
- Scarica il risultato
Troncamento contro bit-rot: due guasti diversi, un'unica etichetta
Due problemi completamente diversi ricevono lo stesso nome di «archivio danneggiato», e la soluzione dipende da quale dei due hai. Il troncamento significa che il file è corto: il download si è fermato prima che arrivasse l'ultimo byte, quindi al file manca la coda. Il bit-rot — qui, un errore nei byte introdotto durante il transito — significa che il file ha la lunghezza corretta ma alcuni byte sono sbagliati: un blocco invertito o azzerato in qualche punto intermedio. Distinguerli richiede dieci secondi e decide tutto su ciò che puoi recuperare.
Controlla prima la dimensione. Sia Google Drive sia Dropbox mostrano il numero reale di byte nel pannello dei dettagli del file; confrontalo con la copia sul tuo disco. Se la tua è più piccola, è troncata — punto. Uno ZIP troncato ha perso il suo record End Of Central Directory — la firma PK\x05\x06 che risiede negli ultimi 22 byte abbondanti del file — quindi un estrattore che si posiziona alla fine per leggere l'indice trova spazzatura o nulla. Ecco perché unzip dice End-of-central-directory signature not found o cannot find zipfile directory, 7-Zip e WinRAR dicono «Unexpected end of archive», e l'estrattore integrato di Windows dice «The Compressed (zipped) Folder is invalid.»
Se la dimensione coincide ma l'estrazione continua a fallire, hai bit-rot. L'indice è presente, quindi lo strumento entra nell'archivio e fallisce file per file: 7-Zip segnala «Data error» o «CRC failed», e unzip -t stampa bad CRC a fronte delle voci specifiche. Ogni voce ZIP conserva un CRC-32 dei suoi dati non compressi sia nella propria intestazione locale sia nella directory centrale; quando i byte decompressi non danno quel valore, lo strumento sa che quel file è danneggiato — ma gli altri di solito non lo sono.
Perché un download dal cloud danneggia un archivio, per cominciare
I trasferimenti interrotti troncano gli archivi più di ogni altra cosa, e l'archiviazione nel cloud aggiunge le sue sfumature. Quando usi «Scarica cartella» di Drive o «Scarica come .zip» di Dropbox, il server costruisce lo ZIP al volo e te lo invia in streaming. Poiché sta comprimendo mentre invia, non conosce in anticipo la dimensione né il CRC di ciascun file, quindi attiva il bit 3 di uso generale in ogni voce e scrive il CRC e le dimensioni dopo i dati compressi, in un descrittore di dati (PK\x07\x08). Se la connessione cade a metà del flusso, ti resta un prefisso pulito di uno ZIP valido ma senza alcuna directory centrale — troncamento da manuale.
Le cartelle grandi peggiorano le cose perché superano la soglia di ZIP64: più di 65.535 file o 4 GiB di dati. Un archivio ZIP64 mantiene un record EOCD ZIP64 PK\x06\x06 e un localizzatore PK\x06\x07 proprio alla fine — ancora più metadati di coda da perdere quando il trasferimento si ferma anzitempo.
Due trappole tipiche del cloud si spacciano per corruzione. Prima: Google Drive si rifiuta di eseguire la scansione antivirus dei file grandi e serve una pagina HTML intermedia al posto dei byte; se hai ottenuto il link con wget, curl o uno script, il tuo «.zip» può in realtà iniziare con <!DOCTYPE html> invece che con PK\x03\x04 — è una pagina web, non un archivio compresso. Seconda: i gestori di download a segmenti che prelevano un file in intervalli di byte paralleli possono lasciare un vuoto o un blocco duplicato quando un intervallo fallisce silenziosamente, producendo un file di lunghezza completa con il centro danneggiato: bit-rot, non troncamento. Aprire il file in un visualizzatore esadecimale e controllare se i primi quattro byte sono 50 4B 03 04 (PK\x03\x04) ti dice all'istante se hai davvero uno ZIP.
Cosa estrae davvero il recupero
Trascina il file qui sopra e lo strumento ignora l'indice mancante o illeggibile e scorre l'archivio in avanti dall'inizio, catturando ogni intestazione di file locale PK\x03\x04 e decomprimendo il flusso deflate che la segue finché i byte reggono. In un archivio troncato, ogni voce scritta per intero prima dell'interruzione torna intatta; solo l'unico file rimasto a cavallo del punto di troncamento torna parziale o va perso. Nel caso del bit-rot, le voci il cui CRC-32 quadra ancora si estraggono normalmente, e lo strumento segnala la voce specifica il cui hash fallisce invece di condannare l'intero archivio. Questo è puro TypeScript in esecuzione nella tua scheda — senza binario unzip, senza trasmettere nulla.
RAR e 7z seguono lo stesso principio su strutture diverse. Un RAR (firma Rar!\x1a\x07\x00 nella v4, Rar!\x1a\x07\x01\x00 nella v5) memorizza i file in blocchi indipendenti, quindi quelli precedenti al danno si decodificano ancora, e un RAR creato con un record di ripristino si ripara molto meglio perché quel record esiste proprio per ricostruire i blocchi mancanti. Un .7z (firma 7z\xBC\xAF\x27\x1C) è il caso fragile: tiene il suo database di intestazioni nella coda e di solito usa compressione solida che concatena molti file in un unico flusso, quindi una coda persa o un errore di byte a metà del flusso può rompere la decompressione di tutto ciò che viene dopo l'ultimo blocco intatto. Lo strumento recupera ciò che i blocchi sopravvissuti permettono e lo dice chiaramente quando un flusso solido non può essere continuato.
Il limite onesto: i byte mancanti restano mancanti
Nulla può recuperare byte che non sono mai arrivati sul tuo disco. Se il download si è fermato al 70%, l'ultimo 30% dei dati compressi semplicemente non esiste in locale, e nessuno strumento — né questo, né la funzione Repair di WinRAR stessa, né una suite di recupero a pagamento — può inventarlo. La vera soluzione per il troncamento è riscaricare da Drive o Dropbox, evitando se possibile una cartella compressa sul server: scarica direttamente il file originale, oppure la cartella in lotti più piccoli, così che il trasferimento abbia più probabilità di concludersi.
Il bit-rot dentro un flusso compresso è altrettanto implacabile a livello del singolo file danneggiato. Deflate è un flusso con stato — un solo bit invertito fa deragliare la decodifica Huffman/LZ77 da quel punto in poi — quindi la voce colpita di solito torna troncata sull'errore, anche se il suo CRC-32 ti ha detto esattamente quale file ha incassato il colpo. Gli archivi cifrati (ZIP AES-256, protezione con password di RAR o 7z) non si possono scansionare senza la password, perché le voci sono testo cifrato. Ciò che il recupero evita in modo affidabile è che un archivio arrivato a metà diventi una perdita totale: se nove file su dieci sono arrivati, non c'è motivo di perdere i nove inseguendo il decimo. E poiché tutto viene eseguito in locale, un archivio con registri finanziari, codice sorgente o documenti personali non viene mai copiato su un server sconosciuto solo per guardarci dentro — apri la scheda Rete e conferma che non esce nemmeno un byte.
Cosa può e cosa non può riparare
Può riparare
- Uno ZIP troncato da un download da Drive/Dropbox interrotto — le voci scritte prima dell'interruzione si recuperano scorrendo le intestazioni locali PK\x03\x04
- Bit-rot in una voce: i file il cui CRC-32 si verifica ancora si estraggono normalmente, e la voce danneggiata viene segnalata invece di far cadere l'intero archivio
- Cartelle compresse sul server che inviano descrittori di dati in streaming (PK\x07\x08) e hanno perso la directory centrale per una connessione caduta
- Download di cartelle ZIP64 (più di 65.535 file o 4 GiB) a cui manca il record PK\x06\x06 e il localizzatore PK\x06\x07 della coda
- Archivi RAR in cui i blocchi precedenti al danno si decodificano ancora — molto meglio con un record di ripristino
- Archivi 7z fino all'ultimo blocco di compressione (solida) completo sopravvissuto
Non può riparare
- Qualsiasi file i cui dati compressi si trovavano dopo il punto di troncamento — quei byte non sono mai arrivati sul tuo disco (meglio riscaricare)
- Un «.zip» che in realtà è la pagina HTML di scansione antivirus di Google Drive — è una pagina web, non un archivio compresso
- La singola voce colpita da un errore di byte a metà del flusso, oltre il punto in cui si è rotto il suo flusso deflate
- Un flusso solido 7z oltre il suo ultimo blocco intatto (i file successivi della catena non si possono decomprimere)
- Archivi cifrati / protetti con password senza la password (le voci sono testo cifrato)
Se una riparazione fallisce, ti diciamo perché (dati mancanti rispetto a struttura danneggiata), e non ti viene mai addebitato nulla per una riparazione fallita.