rsync exclude a directory but include a subdirectory

rsync exclude directory recursively
rsync exclude destination directory
rsync include directory
rsync include exclude
rsync --exclude all except
rsync exclude empty directories
rsync include only
rsync glob

I am trying to copy a project to my server with rsync. I have project specific install scripts in a subdirectory

project/specs/install/project1

What I am trying to do is exclude everything in the project/specs directory but the project specific install directory: project/specs/install/project1.

rsync -avz --delete --include=specs/install/project1 \
    --exclude=specs/* /srv/http/projects/project/ \
     user@server.com:~/projects/project

But like this the content of the specs directory gets excluded but the install/project1 directory does not get included.

I have tried everything but i just don't seem to get this to work

Sometime it's just a detail.

Just change your include pattern adding a trailing / at the end of include pattern and it'll work:

rsync -avz --delete --include=specs/install/project1/ \
    --exclude=specs/* /srv/http/projects/project/ \
    user@server.com:~/projects/project

Or, in alternative, prepare a filter file like this:

$ cat << EOF >pattern.txt
> + specs/install/project1/
> - specs/*
> EOF

Then use the --filter option:

rsync -avz --delete --filter=". pattern.txt" \
    /srv/http/projects/project/ \
    user@server.com:~/projects/project

For further info go to the FILTER RULES section in the rsync(1) manual page.

RSync, You want the --exclude flag. For example, a local rsync: rsync -a --exclude cache/ src_folder/ target_folder/. It really is that simple -- that exclude rule will match a  rsync -a --exclude '*.jpg*' src_directory/ dst_directory/ It is little trickier to exclude all other files and directories except those that match a certain pattern. Let’s say you want to exclude all other files and directories except the files ending with .jpg .

How can I exclude all subdirectories but include files of a directory in , Try this command: rsync -a -f"- */" -f"+ *" /home/user/ destination/. man rsync -f, --​filter=RULE add a file-filtering RULE. The rule to include all files  If you want to solve this with --include and --exclude parameters, you should change the order of them: first exclude what you want, then include everything. I do it usually with this command: By default, rsync does not copy directories. Perhaps you are using the -a flag.

Order of --include and --exclude affects what is being included or excluded. When there are particular subdirectories to be included need to place them first. Similar post available here.

rsync - exclude all directories except a few, A simple filter should do the trick. To build on the prior answer with a proper example -- Explicitly include the parent(s), plus all (**) sub folders and files. Linux Rsync Exclude File,Directory and Folder Examples 15/08/2017 15/08/2017 by İsmail Baydan Rsync is very popular and powerful tool used for backup and clone operations.

How to Exclude Files and Directories with Rsync, 1. Exclude a specific directory. If you don't want to sync the dir1 (including all it's subdirectories) from the source to the destination folder, use the rsync –exclude option as shown below. Verify to make sure dir1 is not copied from source directory to destination directory. Don't forget the "/" from the end of the pathes, or you will get a copy into subdirectory. The order of the --include, --exclude counts. Contrary the other answers, starting with "/" an include/exclude parameter is unneeded, they will automatically appended to the source directory (target/ in the example).

6 rsync Examples to Exclude Multiple Files and Directories using , Rsync is one of the most useful utilities for a server administrator, but it syncs wish to rsync /var to a backup directory but you don't wish to include cache We will exclude any directory (or subdirectories) under source/ that  rsync -a --exclude cache/ src_folder/ target_folder/ It really is that simple -- that exclude rule will match a directory named "cache" anywhere in your tree. For more information, look for "--exclude" and the "FILTER RULES" section on the rsync man page:

10 Linux rsync Command to Exclude Files/Directories, You have to do this for all parent directory levels if you want to cherry pick subdirectories, like this. Another trick is to include all directories with + */ , near the top,  In reading the rsync man page and browsing a lot of websites, I ended up a bit confused, or maybe it was just [SOLVED] Rsync exclude a directory with all subdirectories and files Visit Jeremy's Blog .

Comments
  • Just found a similar question on linuxquestions.org which may help: linuxquestions.org/questions/linux-software-2/…
  • Thank you, that solved it! Rsync really has a strange logic sometimes.
  • Duplicates stackoverflow.com/questions/7960669/…
  • Does the order of --include and --exclude matter? UPDATE: I just answered my own question: it does matter. I can't get it to work with --exclude before --include, but it does work with --include before --exclude.
  • Filter rules are indeed the only sane way to deal with anything more complicated than "exclude all .git directories".