If time taken to compress the data is not an issue, then you can optimize compressed size by using several different tools together.
Compress the data several times using different tools like 7zip, winrar (for zip) and bjwflate.
Next, run deflopt on each archive to reduce each archive a little more.
Finally, run zipmix on the collection of archives. Since different zip tools are better on different files, zipmix picks the best compressed version of each file from each of the archives and produces an output which is smaller than any that any of the zip tools could have produced individually.
You should note however that this is not guaranteed to work any kind of magic on your files. Certain types of data simply do not compress very well, like JPEGs and MP3s. These files are, to put it simply, already zipped internally.