У меня есть один старый сервер 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/