Зачем добавлять косую черту после назначения rsync?

13

Согласно этой веб-странице, добавление «/» в конец назначения rsync приводит к отличному результату от его не добавления.

Я пытался проверить это, но я не могу проверить это:

$ mkdir dir{1..3}
$ touch dir1/file
$ rsync -r dir1/ dir2
$ rsync -r dir1/ dir3/
$ ls dir*
dir1:
file

dir2:
file

dir3:
file

Есть ли смысл иногда добавлять '/' к месту назначения?

EmmaV
источник
Вы ссылаетесь на эту часть справочной страницы A trailing slash on the source changes this behavior to avoid creating an additional directory level at the destination.? Если это так, пожалуйста, обратите внимание, что ваша команда совсем не похожа на команду, приведенную в справочной странице.
jesse_b
@Jesse_b Ваш комментарий меня удивляет ... "При использовании" / "в конце места назначения rsync вставит данные в последнюю папку. Если не использовать" / "в конце места назначения, rsync создаст папку с имя последней папки назначения и вставьте данные в эту папку. "
Хауке Лагинг
@ HaukeLaging Я запутался, что удивительного? Этот конкретный раздел также ссылается на косую черту в источнике. Так что если вы сделали rsync -r dir1/subdir1 dir2/это будет копировать содержимое subdir1в dir2но если вы сделали rsync -r dir1/subdir1/ dir2/это будет скопировать весь каталог (включая содержание) subdir1в dir2так что вы бы./dir2/subdir1/
jesse_b
@Jesse_b Я не заметил "человека" в вашем первом комментарии. Совершенно очевидно, что OP ссылается не на страницу руководства, а на страницу, на которую он ссылался.
Хауке Лагинг
@ HaukeLaging Ой, даже не видел этого. Я думаю, что я слишком быстро скользил и прочитал это как «Согласно странице справочника».
jesse_b

Ответы:

28

Это имеет значение, когда источником является файл, а каталог назначения не существует. Например, возьмите файл с fileименем source:

  • $ rsync file dest/создаст копию fileвнутри каталога dest, тогда как
  • $ rsync file destсделает копию файла с fileименемdest

Добавить (из комментариев); если каталог destуже существует, копия fileбудет создана destв обоих случаях выше.

Основной пример:

~/test > touch file
~/test > mkdir dest1
mkdir: created directory 'dest1'
~/test > tree
.
├── dest1
└── file

1 directory, 1 file
~/test > rsync file dest1
~/test > rsync file dest2
~/test > rsync file dest3/
~/test > tree
.
├── dest1
│   └── file
├── dest2
├── dest3
│   └── file
└── file

2 directories, 4 files
~/test >
RESC
источник
1
Спасибо. Так что, если каталог destуже существует, нет нужды в конце?
EmmaV
Точно. Если в приведенном выше примере каталог destсуществует, копия fileбудет создана внутри в обоих случаях.
RESC