Rsync копирует содержимое каталога, но не сам каталог

121

Я пытаюсь синхронизировать два содержимого папок с разными именами:

rsync -av ~/foo user@remote.com:/var/www/bar

Я хотел бы, чтобы скопировать содержимое fooINTO barна удаленном хосте, но не директория fooсам. Я пробовал что-то подобное foo/*, но rsync этого не поддерживает.

rsync всегда создает

/var/www/bar/foo
Tombart
источник
18
просто оставьте косую черту в конце, должно быть достаточно
exussum

Ответы:

191

Пытаться rsync -av ~/foo/ user@remote.com:/var/www/bar/

первичноротые
источник
38
Это странное поведение по сравнению с mvили cp.
zeekvfu 05
1
Кажется странным и непоследовательным делать косую черту актуальной только для этой конкретной команды. Интересно, почему его не изменили.
Люк Дэвис,
39
На случай, если кому-то также было интересно, почему это работает: это конец /после имени каталога.
Etienne Bruines
Мне также показалось странным, что необходима опция -a. Если я не использую '-a', я получаю сообщение об ошибке при пропуске каталога и ничего не происходит. Читая страницы руководства, я бы не пришел к такому выводу. Судя по документации, он должен работать без опции -a, а опция -v предназначена только для многословности, поэтому это не имеет отношения к фактической работе копии. Weird. Спасибо за ответ.
shawn1874
32

Это просто,

rsync /var/www/ /home/var- копирует содержимое / var / www /, но не саму папку www .

rsync /var/www /home/var- копирует папку www вместе со всем ее содержимым.

«/» Имеет значение.

Марсело Гедес
источник
6
Это должен быть принятый ответ, который действительно объясняет разницу
edi9999
29

Это относится не только к rsync, но когда вы ищете примеры использования команды GNU / Linux, вы можете использовать «eg», которое отображает явные примеры. eg доступен здесь, с инструкциями по его установке: https://github.com/srsudar/eg

Результат для eg rsyncследующего

# rsync


copy the folder source_dir and its content into destination_dir

    rsync -av source_dir destination_dir


copy the contents of source_dir (trailing slash) into destination_dir

    rsync -av source_dir/ destination_dir
Оливье
источник
0

Перейдите в каталог, который вы хотите скопировать, поэтому:

cd ~/foo 

Запустите это:

rsync -avz . user@remote.com:/var/www/bar
Dan612
источник