zip and use
zip -r foo.zip .
You can use the flags
-0 (none) to
-9 (best) to change compressionrate
Excluding files can be done via the
-x flag. From the man-page:
-x files --exclude files Explicitly exclude the specified files, as in: zip -r foo foo -x *.o which will include the contents of foo in foo.zip while excluding all the files that end in .o. The backslash avoids the shell filename substitution, so that the name matching is performed by zip at all directory levels. Also possible: zip -r foo foo -firstname.lastname@example.org which will include the contents of foo in foo.zip while excluding all the files that match the patterns in the file exclude.lst. The long option forms of the above are zip -r foo foo --exclude *.o and zip -r foo foo --exclude @exclude.lst Multiple patterns can be specified, as in: zip -r foo foo -x *.o *.c If there is no space between -x and the pattern, just one value is assumed (no list): zip -r foo foo -x*.o See -i for more on include and exclude.
I guess many people who come via Google to this question mean “archive and compress” when they write “zip”. An alternative to the zip format is tar:
tar -czf copy.tar.gz whatever/
where the compressed archive file will be copy.tar.gz and the contents will be everything in the folder whatever.
-c, --create create a new archive -z, --gzip, --gunzip --ungzip -f, --file ARCHIVE use archive file or device ARCHIVE