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