Você pode usar a opção --filesync
do zip.
Na página do manual zip (1) :
-FS
--filesync Synchronize the contents of an archive with the files on the OS. Normally when an archive is updated, new files are added and changed files are updated but files that no longer exist on the OS are not deleted from the archive. This option enables a new mode that checks entries in the archive against the file system. If the file time and file size of the entry matches that of the OS file, the entry is copied from the old archive instead of being read from the file system and compressed. If the OS file has changed, the entry is read and compressed as usual. If the entry in the archive does not match a file on the OS, the entry is deleted. Enabling this option should create archives that are the same as new archives, but since existing entries are copied instead of compressed, updating an existing archive with -FS can be much faster than creating a new archive. Also consider using -u for updating an archive. For this option to work, the archive should be updated from the same directory it was created in so the relative paths match. If few files are being copied from the old archive, it may be faster to create a new archive instead. Note that the timezone environment variable TZ should be set according to the local timezone in order for this option to work correctly. A change in timezone since the original archive was created could result in no times matching and recompression of all files.
This option deletes files from the archive. If you need to preserve the original archive, make a copy of the archive first or use the --out option to output the updated archive to a new file. Even though it may be slower, creating a new archive with a new archive name is safer, avoids mismatches between archive and OS paths, and is preferred.
Exemplo:
user@host:~/$ mkdir compressme; echo "Lorem Ipsum" >compressme/file1; echo "Lorem Ipsum" >compressme/file2; echo "Lorem Ipsum" >compressme/file3
user@host:~/$ zip -r --filesync all.zip compressme
adding: compressme/ (stored 0%)
adding: compressme/file2 (stored 0%)
adding: compressme/file1 (stored 0%)
adding: compressme/file3 (stored 0%)
user@host:~/$ rm compressme/file2
user@host:~/$ zip -r --filesync all.zip compressme
updating: compressme/ (stored 0%)
deleting: compressme/file2