Как копировать файлы с помощью Rsync через SSH
Шаг 1. Настройте открытые SSH-ключи.
На нашем исходном сервере мы сгенерируем общедоступные SSH-ключи без пароля:
ssh-keygen -f ~/.ssh/id_rsa -q -P "" cat ~/.ssh/id_rsa.pub
Это наш публичный SSH-ключ, который можно разместить на других хостах, чтобы предоставить нам доступ:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLVDBIpdpfePg/a6h8au1HTKPPrg8wuTrjdh0QFVPpTI4KHctf6/FGg1NOgM++hrDlbrDVStKn/b3Mu65//tuvY5SG9sR4vrINCSQF++a+YRTGU6Sn4ltKpyj3usHERvBndtFXoDxsYKRCtPfgm1BGTBpoSl2A7lrwnmVSg+u11FOa1xSZ393aaBFDSeX8GlJf1SojWYIAbE25Xe3z5L232vZ5acC2PJkvKctzvUttJCP91gbNe5FSwDolE44diYbNYqEtvq2Jt8x45YzgFSVKf6ffnPwnUDwhtvc2f317TKx9l2Eq4aWqXTOMiPFA5ZRM/CF0IJCqeXG6s+qVfRjB root@cloudads
Скопируйте этот ключ в буфер обмена и войдите на целевой сервер.
Поместите этот SSH-ключ в ваш файл ~/.ssh/authorized_keys:
Если вашей папки SSH не существует, создайте ее вручную:
mkdir ~/.ssh chmod 0700 ~/.ssh touch ~/.ssh/authorized_keys chmod 0644 ~/.ssh/authorized_keys
Шаг 3 - Rsync файлы завершены
Rsync — отличная утилита, так как она позволяет, среди прочего, рекурсивно копировать файлы со сжатием и по зашифрованному каналу.
Мы скопируем файл с исходного сервера (198.211.117.101) в /root/bigfile.txt на наш целевой сервер (IP: 198.211.117.129) и также сохраним его в /root/bigfile.txt.
Войдите на 198.211.117.101 и выполните rsync файл на 198.211.117.129:
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /root/bigfile.txt 198.211.117.129:/root/
Если вы используете другого пользователя, например \username\, вам придется добавить его перед целевым сервером. Убедитесь, что ваш открытый ключ находится в этом файле пользователей ~/.ssh/authorized_keys:
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /root/bigfile.txt username@198.211.117.129:/
Параметры SSH полезны для того, чтобы Rsync молчал и не запрашивал каждый раз, когда вы подключаетесь к новому серверу.
Убедитесь, что вы получили файл на целевом сервере (198.211.117.129):
ls -la /root/bigfile.txt
И все готово!