服务器A(主) 10.12.237.234
服务器B(从) 10.12.237.232
需求:服务器B定期拉取服务器A的数据并备份。
实现方式:rsync
一、两台服务器都安装rsync
1)查看是否安装 rpm -aq rsync 安装命令 yum -y install rsync
2)备份服务器B启动服务
rsync --daemon
3)查看服务
ps -ef |grep rsync #或者 netstat -lnutp |grep rsync
二、主服务器A配置用户
新增用户
useradd rget
设置密码
echo '123456' | passwd --stdin rget
设置权限
setfacl -R -m user:rget:rwx /tmp
设置默认权限 及时以后目录变动更改
setfacl -R -m default:rget:rwx /tmp
查看权限是否正确
getfacl /tmp
三、备份服务器B生成密钥
1)生成密钥(一直回车就可以)
ssh-keygen -t rsa
2)复制密钥,这里需要输入服务器A刚才配置的的密码
ssh-copy-id [email protected]
3)测试 登陆服务器A(主)
4)登陆成功 exit 退出即可
四、备份服务器B执行同步
1)执行命令
rsync -azP --delete [email protected]:/tmp /data/backup
# --delete删除源文件中没有的数据
如果backup目录中存在/tmp中的文件,同步成功。
2)编写脚本
vi rsync_back.sh
#!/bin/bash
rsync -az [email protected]:/tmp /data/backup
#定期备份的时候可以把 -azP中的P去掉,不用看进度。
delete 也要去掉,防止误删操作。
执行 chmod +x rsync_back.sh
3)定时同步每周五晚23点
命令 crontab -e
0 23 0 0 5 /home/rsync_back.sh &
#定期备份
tar -zcvf backup_`date +%Y-%m-%d`.tar.gz /data/backup/
当然这样实现备份是极为不安全的,rget用户是可以登陆系统的,也就是说可以做各种操作,甚至提权操作,所以给权限的时候要适量。