Donglecow
Donglecow

Reputation: 497

Rsync - How to Include Specific Parts of File Path

I'm trying to use Rsync filters to manipulate how the file structure appears at my target destination. I've read through other SE questions and consulted Google, but am still having trouble.

As an example, I have the following file structure:

/home/donglecow/images/123/001/image.jpg
/home/donglecow/images/123/002/image.jpg
/home/donglecow/images/456/001/image.jpg
/home/donglecow/images/456/002/image.jpg

When running Rsync, I want to copy this exact structure: images/123/001/image.jpg, omitting /home/donglecow/at first.

Once I have this working, I want to copy over everything under images recursively. The problem I'm having is that it only copies over the last directory and its contents, for example: 001/image.jpg.

The command I'm using is: rsync -avvvrz --exclude='/home/donglecow/' --include='images/*' /home/donglecow/images/123/001/ /home/donglecow/rsyncDestination.

I end up with: /home/donglecow/rsyncDestination/001/image.jpg, but want /home/donglecow/rsyncDestination/images/123/001/image.jpg.

Where am I going wrong?

Upvotes: 1

Views: 935

Answers (1)

laurent
laurent

Reputation: 90756

You need to use the --relative (-R) argument. That will create the intermediate directories.

Edit:

If you don't want the "/home/donglecow/" you'll need to run rsync from that directory. For example:

cd /home/donglecow
rsync -aRvvvrz --exclude='*/images/' --include='images/*' images/123/001/ /home/donglecow/rsyncDestination

Upvotes: 1

Related Questions