Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save cy-park/f9f363b2aea29789f8b4 to your computer and use it in GitHub Desktop.
Save cy-park/f9f363b2aea29789f8b4 to your computer and use it in GitHub Desktop.
Zip excluding specific directories and files

Zip excluding specific directories

Exclude .git file and node_modules directory

$ zip -r9 [target_file] [source_file] -x *.git* node_modules/\*

Exclude .git file and files in node_modules directory, but keep node_modules directory

$ zip -r9 [target_file] [source_file] -x *.git* node_modules/**\*

Number parameter means degree of compression. -9 is the most optimal but the slowest compression. If -0 is given, there will be no compression. Default level is -6.

** means to adapt exclusions recursively inner directories. \* is an escaped wildcard to avoid path expansion.

@r0b3r70
Copy link

r0b3r70 commented Jan 20, 2018

slightly modified to backup all my projects in www dir
$ zip -r www.zip www -x *.git* */node_modules/**\*

@se468
Copy link

se468 commented Feb 22, 2018

When it says no matches found: *.git*. Excludes the whole .git folder for the subdirectory. zip -r9 zipfile.zip directory -x directory/.git/\* directory/node_modules/\*

@runandrew
Copy link

@se468 thanks for the info, couldn't figure out why I was getting that error. For my specific case I zipped a folder containing multiple subfolders that contained node_modules and used the following command

zip -r output.zip directory -x \*\*/\*/node_modules/\*

@DracoClaw
Copy link

I think this might help me in what I am trying to do, I just dont understand how to use it.

@AlfredoDaAs
Copy link

this really helps thanks!

@wahyusa
Copy link

wahyusa commented Mar 5, 2022

Thanks it works!!

@G33kNoob
Copy link

not work ???

@G33kNoob
Copy link

forme this is the work
zip -r dockerexpress dockerexpress -x 'node_modules/*'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment