Fixing a corrupted zip file
If you try to open a zip file and it won’t unzip you can often fix it by rezipping the file (source).
First, try:
zip -F corrupted.zip --out fixed.zip
If that doesn’t work try:
zip -FF corrupted.zip --out fixed.zip
If you receive an error message like:
zip error: Entry too big to split, read, or write (Poor compression resulted in unexpectedly large entry - try -fz)
then:
- Make sure you have at least version 3.0 of
zip
- Try adding
-fz
to the command
zip -FF -fz corrupted.zip --out fixed.zip
Increasing compression
There is a tradeoff between how long it takes to compress something and how much smaller gets.
When using zip
this is controlled by a numeric argument ranging from 1 (faster) to 9 (smaller).
So, if you’re archiving large objects try using zip -9
.
If you have a bunch of already zipped files you can recompress them using the following bash loop:
for f in *.zip
do
mkdir ${f%.*}
unzip -d ${f%.zip} $f
rm $f
rm ${f%.*}/${f%.*}.csv
zip -r -9 $f ${f%.zip}
done