93

When I run this command

rsync -avzp --del -e "ssh -p myport" user@hostname:/var/www/tests /var/www/tests

files get synchronized but instead of saving files in /var/www/tests, Rsync creates one more directory "tests" inside of existing "tests":

/var/www/tests/tests

and puts files there. How to tell Rsync not to create a new directory?

2 Answers 2

92

If you don't want another tests directory created, the correct command would be

rsync -avzp --del -e "ssh -p myport" user@hostname:/var/www/tests/ /var/www/tests

Note the / at the end of user@hostname:/var/www/tests/.

2
  • 1
    beware also of the rsync option -R, if you are having this problem. The very purpose of -R (or --relative) is to recreate the full source directory path at the destination. So it will have the same effect as if you omit the trailing slash.
    – markling
    Nov 12, 2019 at 11:15
  • -a already contains -p
    – mgutt
    Apr 1, 2022 at 16:45
42

You need a trailing slash on the source.

Here is the correct command:

rsync -avzp --del -e "ssh -p myport" user@hostname:/var/www/tests/ /var/www/tests

More Info

Explanation of rsync and trailing slashes:

http://defindit.com/readme_files/rsync_backup.html

Rsync has two major modes of operation. The modes are dependent on the absence or presence of the trailing slash on the source directory.

Another example:

http://www.jveweb.net/en/archives/2010/11/synchronizing-folders-with-rsync.html

...you need to add the trailing slash, otherwise, a folder called Pictures is created inside the Pictures folder that we specify as destination.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .