How can I create a zip archive for Windows and Linux users?
zip -r -x .DS_Store directory.zip directory

zip removes extended attributes and ACLs by default

find directory -name .DS_Store -delete; ditto -ck --norsrc directory directory.zip

--norsrc implies --noextattr and --noacl; --noextattr would require --norsrc
-c is compress, -k uses PKZip (zip) instead of CPIO

COPYFILE_DISABLE= tar --exclude .DS_Store -czf directory.tgz directory

Setting COPYFILE_DISABLE tells tar to remove extended attributes and ACLs instead of creating ._ files



The files that start with ._ are AppleDouble files (not resource forks), and they are used to store extended attributes and ACLs.

Extended attributes are used to store the quarantine status of files, the source URLs of files downloaded from the Internet, information about aliases (aliases stop working if extended attributes are removed), Spotlight comments, the encoding of files saved with TextEdit, and so on.

You can list extended attributes and ACLs with ls -l@e. You can remove extended attributes and ACLs recursively with xattr -cr .; chmod -NR .