Copy folder recursively, excluding some folders
bash, scripting, shell, unix
Solution
Use rsync:
rsync -av --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination
Note that using `source` and `source/` are different. A trailing slash means to copy the contents of the folder `source` into `destination`. Without the trailing slash, it means copy the folder `source` into `destination`.
Alternatively, if you have lots of directories (or files) to exclude, you can use `--exclude-from=FILE`, where `FILE` is the name of a file containing files or directories to exclude.
`--exclude` may also contain wildcards, such as `--exclude=*/.svn*`
Problem
I am trying to write a simple bash script that will copy the entire contents of a folder including hidden files and folders into another folder, but I want to exclude certain specific folders. How could I achieve this?