Как синхронизировать файлы между двумя удаленными компьютерами с явным портом и разными именами пользователей?

Как синхронизировать файлы между двумя удаленными компьютерами с явным портом и разными именами пользователей?

Я хочу rsync-файлы между двумя удаленными серверами. Я попытался следовать следующему решению @roaima:https://unix.stackexchange.com/a/183516/137526, но мне нужно более деликатное решение по двум причинам:

  1. На одном из удаленных серверов порт для ssh не является портом по умолчанию, поэтому мне нужно указать порт с помощью опции -p.
  2. Я могу подключиться по ssh к обоим серверам, но мне пришлось использовать разные имена пользователей, поэтому это пришлось указать явно.

Кроме того, в приведенном решении не ясно, какой путь находится на исходном хосте, а какой на целевом, так как оба отображаются как /var/www.

Я пробовал разные варианты следующей команды, но безуспешно:

ssh -R localhost:50000:username1@dest_host:22 username2@source_host 'rsync -e "ssh -p 50000" -avzt --progress --partial /path/on/source/ localhost:/path/on/destination/'

решение1

То, что вы там делаете, по крайней мере 'сложно'. Насколько я понял, вы подключаетесь к одному серверу и говорите ему синхронизироваться с другим сервером.

Для простоты использования вы можете указать порт и пользователя для использования в локальной конфигурации ssh для конкретного хоста. Например, если вы добавите следующие строки в файл ~/.ssh/config (/home/username2/.ssh/config) на source_host:

machine dest_host
 user username1
 port 50000

Вы можете синхронизировать файлы с исходным хостом на dest_host с помощью rsync:

ssh username2@source_host 'rsync -e ssh /source/path/on/source_host dest_host:path_below_username1_home

Предположим, что sshd dest_host прослушивает порт 50000. Вы также можете рассмотреть опцию "-r" / "-u" rsync.

решение2

Элегантное решение, которое я нашел, — это использование scp.

scp -3 -Cp [email protected]:/path/file*.txt [email protected]:/path/

Работает отлично. Обратите внимание на использование двух разных имен пользователей для двух хостов. Вы также можете использовать подстановочные знаки в имени файла, например *.

Связанный контент