rsync介绍
rsync
英文称为remote synchronizetion
,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,**scp每次都是全量拷贝,而rsync可以增量拷贝。**当然,rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。
在同步数据的时候,默认情况下,rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化同步,但是需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可是实现快速的同步备份数据。
rsync - 快速,通用,可实现全量和增量的远程(和本地)文件复制工具。
rsync监听端口:873
rsync运行模式:C/S
client/server :客户端/服务端
rsync三种工作模式
Rsync有三种传输模式,分别是本地方式、远程方式、守护进程
rsync守护进程模式部署
环境:
主机名 | 角色 | IP | 系统 |
---|---|---|---|
c7-41 | 服务端 | 10.0.0.41 | CentOS7.7 |
c7-42 | 客户端 | 10.0.0.42 | CentOS7.7 |
服务端部署
1.确认rsync软件服务是否存在
没有的话直接yum安装:# yum -y install rsync
常用参数详解
-v, --verbose | 详细模式输出 |
-a, --archive | 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD |
-z, --compress | 对备份的文件在传输时进行压缩处理 |
-P | 显示进度 |
2.手动配置rsync软件配置文件
vim /etc/rsyncd.conf
##全局配置 uid = root #用户 gid = root #用户组 use chroot = no #安全相关 max connections = 200 #最大链接数 timeout = 300 #超时时间 pid file = /var/run/rsyncd.pid #进程对应的进程号文件 lock file = /var/run/rsync.lock #锁文件 log file = /var/log/rsyncd.log #日志文件,显示出错信息 ##模块配置 [backup] #模块名称 path = /data #模块对应的位置(路径) ignore errors #忽略错误程序 read only = false #是否只读 list = false #是否可以列表 hosts allow = 10.0.0.0/24 #准许访问rsync服务器的客户范围 #hosts deny = 0.0.0.0/32 #禁止访问rsync服务器的客户范围 auth users = rsync_backup #不存在的用户;只用于认证 secrets file = /etc/rsync.password #设置进行连接认证的密匙文件
注意:配置文件中,行后不要有注释和空格
3. 创建rsync备份目录/授权rsync用户管理备份目录;修改备份目录权限
[root@ c7-141 ~]# mkdir -p /data
[root@ c7-141 ~]# useradd rsync -s /sbin/nologin -M
[root@ c7-141 ~]# chown -R rsync.rsync /data/
4. 创建认证用户密码文件;修改文件权限
[root@ c7-141 ~]# echo "rsync_backup:123456" > /etc/rsync.password
[root@ c7-141 ~]# chmod 600 /etc/rsync.password
5.重启rsync守护进程服务
# systemctl restart rsyncd.service
# systemctl enable rsyncd.server
客户端部署
创建密码文件,客户端密码文件中,只需要密码即可。同时,密码文件的权限是600
[root@ c7-42 ~]# echo "123456" > /etc/rsync.password
[root@ c7-42 ~]# chmod 600 /etc/rsync.password
客户端推送文件
# touch aaa.txt
# rsync -avz aaa.txt rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password
然后看一下服务端的data/目录下有没有aaa.txt文件
有的话就说明推送成功
# 关闭一下防火墙
客户端拉取文件
# 事例
首先在服务端data/目录下创建一个空文件
再去客户端拉取
# rsync -avz rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password /root/ #拉取到root目录下
文件就拉取过来啦