Slashes and the rsync command
It's described in the rsync(1)
manpage:
A trailing slash on the source changes this behavior to avoid creating an additional directory level at the destination. You can think of a trailing
/
on a source as meaning "copy the contents of this directory" as opposed to "copy the directory by name", but in both cases the attributes of the containing directory are transferred to the containing directory on the destination. In other words, each of the following commands copies the files in the same way, including their setting of the attributes of/dest/foo
:rsync -av /src/foo /dest rsync -av /src/foo/ /dest/foo
As to the destination, I don't think it has any major consequences. There is a difference if the source is a file and destination doesn't exist — this will make a copy of SRC
called DEST
:
rsync SRC DEST
, whereas, this will create directory DEST
and copy the SRC
file into it:
rsync SRC DEST/
I tested it with rsync 3.1.3 on Arch Linux, the results are below:
1. rsync -avPzu test login@remote:/home/login/test "test" directory is copied inside of existing "test" on remote (structure is then test/test/...)
2. rsync -avPzu test login@remote:/home/login/test/ same as above
3. rsync -avPzu test/ login@remote:/home/login/test content of "test" directory is synchronized with the remote "test" directory
4. rsync -avPzu test/ login@remote:/home/login/test/ same as above
5. rsync -avPzu test login@remote:/home/login/ same as above
6. rsync -avPzu test login@remote:/home/login same as above
The methods 3-6 are the correct ones in this case, contrary to the accepted answer.