Назад | Перейти на главную страницу

Rsync через ssh с корневым доступом с обеих сторон

У меня есть один старый сервер ubuntu и один новый сервер debian, и я переношу данные со старого на новый. Я хочу использовать rsync для передачи данных, чтобы сделать окончательную миграцию проще и быстрее, чем эквивалентный процесс tar / scp / untar.

В качестве примера я хочу синхронизировать домашние папки по одной с новым сервером. Для этого требуется root-доступ на обоих концах, поскольку не все файлы на исходной стороне доступны для чтения всем, и место назначения должно быть записано с правильными разрешениями в / home. Я не могу понять, как дать rsync root-доступ с обеих сторон.

Я видел несколько связанных вопросов, но ни один из них не совсем соответствует тому, что я пытаюсь сделать.

Я настроил sudo и работаю на обоих серверах.

Фактически вам НЕ нужно разрешать корневую аутентификацию через SSH для запуска rsync как предлагает Антуан. Транспортная и системная аутентификация может выполняться полностью над учетными записями пользователей, если вы можете запускать rsync с sudo на обоих концах для чтения и записи файлов.

Как пользователь целевого сервера вы можете получать данные с исходного сервера следующим образом:

sudo rsync -aPe ssh --rsync-path='sudo rsync' boron:/home/fred /home/

Пользователь, от имени которого вы работаете на обоих серверах, будет нуждаться в беспарольном * доступе sudo к двоичному файлу rsync, но вам НЕ нужно включать ssh-вход как root где-либо. Если используемый вами пользователь не соответствует на другом конце, вы можете добавить user @ boron: чтобы указать другого удаленного пользователя.

Удачи.

* или вам нужно будет ввести пароль вручную в окне тайм-аута.

Если ваши данные не очень конфиденциальны, вы можете использовать tar и socat. По моему опыту, это часто бывает быстрее, чем rsync через ssh.

Тебе нужно socat или netcat с обеих сторон.

На целевом хосте перейдите в каталог, в который вы хотите поместить свои данные, после этого выполните:
socat TCP-LISTEN:4444 - | tar xzf -

Если целевой хост слушает, запустите его на источнике, например:
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444

Для этой настройки вам понадобится надежное соединение между двумя серверами.

Хорошо, я собрал все подсказки, чтобы получить что-то, что мне подходит.

Назовем серверы «src» и «dst».

Настройте пару ключей для root на целевом сервере и скопируйте открытый ключ на исходный сервер:

dest $ sudo -i
dest # ssh-keygen
dest # exit
dest $ scp /root/id_rsa.pub src:

Добавьте открытый ключ к авторизованным ключам root на исходном сервере

src $ sudo -i
src # cp /home/tim/id_rsa.pub .ssh/authorized_keys

Вернувшись на целевой сервер, перетащите данные с помощью rsync:

dest $ sudo -i
dest # rsync -aP src:/home/fred /home/