Common causes
- Wrong password on an encrypted archive (ZipCrypto cannot tell a wrong password apart from corrupt data)
- A few bytes were corrupted in transfer, for example FTP ASCII mode altering line-ending bytes
- Failing storage: a bad USB stick, SD card or disk sector damaged part of the archive
- Faulty RAM or overclocking on the machine that created or extracts the archive
- A buggy or interrupted backup tool wrote inconsistent data
- Antivirus or a proxy modified the file during download
How to fix it
- Rule out the password first. If the archive is encrypted, retype the password carefully (watch keyboard layout, Caps Lock and trailing spaces). Errors that hit every file usually mean a wrong password; errors on one or two files mean corruption.
- Test the whole archive. Run unzip -t file.zip or 7z t file.zip to list exactly which entries fail. This tells you whether one file or the whole archive is affected.
- Get a fresh copy. Download or copy the archive again, using binary mode for FTP/SFTP, and compare the SHA-256 hash with the source. Most CRC errors come from a single bad transfer.
- Extract the good files. Extract with 7z x file.zip or WinRAR with 'Keep broken files' ticked. Every entry that passes its CRC check is intact; only the failing files need recovery.
- Check the hardware. If fresh copies fail on the same machine but work elsewhere, run a disk check (chkdsk /f or smartctl) and a memory test (Windows Memory Diagnostic or memtest86).
- Recreate the archive from source. If you still have the original files, build a new archive and test it with unzip -t before deleting anything.
Shell
# list every entry and report CRC failures
unzip -t backup.zip
7z t backup.zip
# compare with the source copy
sha256sum backup.zip How to stop it happening again
- Always transfer archives in binary mode and verify a SHA-256 hash afterwards
- Keep a second copy of important backups on different storage
- Store archive passwords in a password manager instead of retyping them