I've a corrupt zip file. I've tried to repair it with
zip -F file.zip
and
zip -FF file.zip
but was not successful. Is there another terminal tool under Linux for repairing zip files?
try this
zip -FF Corrupted.zip --out New.zip
This will scan the corrupted zip archive and make a new one eliminating the errors.
As a result you will get a new zip file. Then simply run this command.
unzip New.zip
Hope this helps.
Just referenced this question in my answer to a similar one - Linux Mint 12 - how to open a .zip file in terminal
It is worth adding here what the zip manual currently says about the difference between -F and -FF:
The single -F is more reliable if the archive is not too much damaged, so try this option first.
So the first attempt would be:
zip -F broken.zip --out fixed.zip
unzip fixed.zip
And if that doesn't work:
zip -FF broken.zip --out fixed.zip
unzip fixed.zip
I recently encountered a .zip file that neither zip -F file.zip nor zip -FF file.zip could fix. However,
7z x file.zip
was able to extract all the files. Hence, trying out p7zip could be a good idea. If needed, you can then pack the extracted files into a new archive.
I'm not aware of a program that will do a better job repairing the archive though.
You might try
unzip -vt file.zip
just to see if maybe you can extract some of the files safely, or figure out which files in the archive are corrupt.
Due to permission errors, a ZIP process of mine crashed consistently before moving the temporary ZIP file into the final ZIP file.
The result was a folder full of temporary files named zi<random>, e.g. zi0Be571a.
zip -F did not work, nor did zip -FF, 7z x, ziprecover. The error was that the file did not contain a central directory.
On Windows, WinRAR gave an error but did display the (partial) file contents.
DiskInternals ZipRecover was able to scan the temporary file and reconstruct the central directory, yielding a perfectly recovered Zip file.
The man page of zip explains:
The -FF option may create an inconsistent archive. Depending on what is damaged, you can then use the -F option to fix that archive.
So, you run:
zip -FF damaged.zip --out fix1.zip
zip -F fix1.zip --out fix2.zip
unzip fix2.zip
This approach worked for my damaged zip file.