When does adding / to a directory change its meaning?

E.g. from Linux in a Nutshell:

Transfer the entire directory proj to the /planning directory on remote host ourhub:

$ rsync -r proj/ ourhub:/planning

Transfer the files and subdirectories under proj to the /planning directory on remote host ourhub:

$ rsync -r proj ourhub:/planning

But ls proj and ls proj/ are the same. (I think I have asked something similar before, but I couldn't find it). Thanks.


There's no system-wide rule; but, the behavior you see in rsync is documented near the beginning of the rsync man page:

          rsync -avz foo:src/bar /data/tmp

   This would recursively transfer all files from the directory src/bar on the machine foo into the /data/tmp/bar directory on the local machine. The files are transferred
   in  "archive" mode, which ensures that symbolic links, devices, attributes, permissions, ownerships, etc. are preserved in the transfer.  Additionally, compression will
   be used to reduce the size of data portions of the transfer.

          rsync -avz foo:src/bar/ /data/tmp

   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:
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.