远程同步文件 rsync 免密码登录

16 篇文章 0 订阅

rsync与scp的区别主要是rsync可以设置已经存在的文件不需要再次同步。

例如:

rsync -avzu --progress -rsh=ssh mission@10.1.1.156:/home/mission/StationPisPlayer/data/resource .

把156上的文件夹拷贝到本地机器

在同步文件时要手动输入密码。

如何设置免密码呢?

由于脚本是系统自启的,是root用户,所以要设置ssh协议支持root免密码远程登录

修改ssh服务配置文件
sudo vi /etc/ssh/sshd_config
PermitRootLogin参数值为yes
PermitEmptyPasswords 参数值修改为yes
重启ssh服务
service sshd restart  # 或者
/etc/initd.d/sshd restart

1.在本地机上执行 ssh-keygen -t rsa 

直接回车会生成id_rsa  id_rsa.pub两个文件,id_rsa为私钥,id_rsa.pub为公钥

2.把公钥的内容写到远程机器156的.ssh/authorized_keys文件里

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.91

3.在本地机器上执行两条命令

eval "$(ssh-agent -s)"
ssh-add

注意这个设置只在当前终端上生效,换个终端要重新执行这两条命令,这样就可以了

4.ssh 用户名@远程机器ip 测试设置是否生效

远程同步两个服务器内容到本地的脚本:实际使用时用户名是root,

#!/bin/bash
ftpIp1=10.1.1.103
ftpUser1=mission
ftpPasswd1=mission
ftpRoot1=/home/mission/test/
dir1="resource style"

ftpIp2=10.1.1.156
ftpUser2=mission
ftpPasswd2=mission
ftpRoot2=/home/mission/StationPisPlayer/data/
dir2="resource scroll_resource"
eval "$(ssh-agent -s)"
ssh-add
function f1()
{
ip=$1
user=$2
password=$3
dirstr=$4
rootdir=$5
for i in $dirstr
do
rsync -avzu --progress -rsh=ssh $user@$ip:$rootdir$i .
done
}
while true; do
touch flag
f1 $ftpIp1 $ftpUser1 $ftpPasswd1 "$dir1" $ftpRoot1
f1 $ftpIp2 $ftpUser2 $ftpPasswd2 "$dir2" $ftpRoot2
rm flag
sleep 10
done

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值