一:什么是rsync
rsync是一个开源的备份服务器,可以在不同主机之间实现同步,可以实现本地和异地配置,可以实现数据的全量和增量备份
二:rsync的工作模式
2.1 本地模式
在本地将一个文件传到本地其他目录下,类似于cp命令
[root@backup-41 backup]# rsync -azvP /etc/hosts /opt/
2.2 远程模式
将文件传到远程服务器上的目录下.类似于scp
和scp对比的话,如果文件已经存在,rsync使用的是增量备份
[root@backup-41 opt]# rsync -azvP /etc/hosts 172.16.1.31:/opt/
2.3 服务模式(守护进程模式)
2.3.1 安装rsync服务
[root@backup-41 ~]# yum install rsync.x86_64 -y
2.3.2 rsync配置文件
查看rsync的主要配置文件目录
[root@backup-41 etc]# rpm -qc rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
养成好习惯,先备份系统默认的配置文件,在创建自己的配置文库
[root@backup-41 etc]# cp /etc/rsyncd.conf{,.bak}
[root@backup-41 etc]# vim rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#########################
[backup]
comment = welcome to oldboyedu backup!
path = /backup
[data]
path = /data
2.3.3 创建www用户
先创建www组
[root@backup-41 etc]# groupadd -g 666 www
因为www用户只是为了运行程序的,不做登录,所以创建傀儡用户
[root@backup-41 etc]# useradd -M -s /sbin/nologin -u 666 -g 666 www
2.3.4 创建rsync_backup这个虚拟用户的认证密码
虚拟用户和目录都在rsync的配置文件里有定义
创建密码认证文件
[root@backup-41 etc]# vim /etc/rsync.passwd
rsync_backup:cxy123456
修改认证文件权限,权限过大会报错
[root@backup-41 etc]# chmod 600 rsync.passwd
2.3.4 启动服务
[root@backup-41 etc]# systemctl restart rsyncd
[root@backup-41 etc]# systemctl enable rsyncd
2.3.5 测试
在nfs-31这个主机上使用rsync同步配置数据到rsync服务器
[root@nfs-31 /]# rsync -azvP /opt/test_dir/ rsync_backup@172.16.1.41::backup
Password:
rsync: mkstemp ".test_9.txt.UQFsxp" (in backup) failed: Permission denied (13)
发现报错了,提示权限拒绝
排查:发现backup服务器上创建的/backup目录属主不对,修改成www
[root@backup-41 etc]# chown www:www /backup/
[root@backup-41 etc]# chown www:www /data/
再次测试成功,在backup服务器上查看,文件已经同步成功
[root@backup-41 backup]# ls
1G.txt test_1.txt test_3.txt test_5.txt test_7.txt test_9.txt
test_10.txt test_2.txt test_4.txt test_6.txt test_8.txt
2.3.6 免密传输
测试的时候发现每次同步都需要输入认证密码才能同步;怎么做到不输入就能同步传输
方法一:使用密码文件同步
[root@nfs-31 /]# cd /etc/
[root@nfs-31 etc]# echo "cxy123456" > /etc/rsync.passwd
[root@nfs-31 etc]# chmod 600 /etc/rsync.passwd
[root@nfs-31 etc]# rsync -azvP /opt/test_dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwd
方法二:使用环境变量来同步
[root@nfs-31 etc]# export RSYNC_PASSWORD='cxy123456'
[root@nfs-31 etc]# rsync -azvP /opt/test_dir/ rsync_backup@172.16.1.41::backup
总结:怎么理解root,www,rsync_backup这个3个用户的关系
root用户就如快递公司老板
www用户就如快递公司的员工
rsync_backup用户就如快递公司的会员