本地模式:本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式
基于传统的ssh协议,本地主机使用远程shell和远程主机通信
作为一个独立服务,本地主机通过网络套接字连接远程主机上的rsync daemon
区别:
??前两者的本质是通过本地或远程shell,而第3种方式则是让远程主机上运行rsyncd服务,使其监听在一个端口上,等待客户端的连接。
本地模式:
rsync [OPTION...] SRC... [DEST]
例如:
[root@LAP1 data]# rsync file1 file111
[root@LAP1 data]# ls
file1 file11 file111 file2
基于传统的ssh协议使用格式:
Pull:
rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push:
rsync [OPTION...] SRC... [USER@]HOST:DEST
例如:
rsync -av --delete /data/ 10.0.0.12:/back
#不写用户名默认使用的就是当前主机使用的用户
作为一个独立服务:
Pull:
rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] #协议的形式访问,效果等同于上面
Push:
rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
rsync常用选项:
-v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
-a --archive :归档模式,表示递归传输并保持文件属性。
-t --times:保持mtime属性。强烈建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新,检查出mtime不同从而导致增量传输无效
--delete :以SRC为主,对DEST进行同步。多则删之,少则补之
rsync的软件包:
官方网站: http://rsync.samba.org/
软件包:rsync,rsync-daemon(CentOS 8)
服务文件:/usr/lib/systemd/system/rsyncd.service
配置文件:/etc/rsyncd.conf
端口:873/tcp
两种方式实现rsync服务器
??rsync即可以作为服务器端,也可以作为客户端程序。
方式一:通过rsync守护进程的方式实现rsync服务
#在备份服务器启动 rsync 进程
[root@bakup_server ~]# rsync --daemon #--daemon选项表示启动为守护进程
Failed to parse config file: /etc/rsyncd.conf #必须要有这个配置文件才能启动成功
[root@bakup_server ~]# touch /etc/rsyncd.conf #需要创建这个配置文件才能正常启动
[root@bakup_server ~]# rsync --daemon #启动rsync守护进程
[root@bakup_server ~]# ss -ntl #守护进程启动后会监听873端口
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 5 0.0.0.0:873 0.0.0.0:*
#设置rsync服务器的共享信息
[root@bakup_server ~]# cat /etc/rsyncd.conf #等号之间可以有空格
[backup] #定义存放数据共享的名字
path = /bakup #真实的路径,存放共享文件的路径 (利用rsync将这个目录共享出去,共享出去的名字叫做bakup)
read only = no #指定可读写,默认只读
[root@bakup_server ~]# rsync --daemon #更改问配置文件以后需要重新开启守护进程才会生效
[root@bakup_server ~]# setfacl -m u:nobody:rwx /bakup/ #指定目录给nobody权限,默认用户以nobody访问此目录
使用客户端连接rsync备份服务器:
#格式 rsync rsync://host 或者 rsync host::
客户端查看服务器的情况:
[root@data_server ~]# rsync rsync://10.0.0.12 #以协议的形式访问
backup #共享出来的名字
[root@data_server ~]# rsync 10.0.0.12:: #以服务的形式访问
backup
#实现客户端将文件拷贝到rsync共享的目录中
注意:传输的时候不管以谁的身份,都会映射为nobody,所以不用写用户名都行
[root@data_server ~]# rsync /root/anaconda-ks.cfg root@10.0.0.12::backup
[root@bakup_server bakup]# ll
total 8
-rw------- 1 nobody nobody 1526 Oct 24 17:48 anaconda-ks.cfg
-rw-r--r-- 1 nobody nobody 658 Oct 24 17:49 fstab
以独立服务方式运行rsync并实现验证功能
??rsync-daemon:安装这个软件包以后会提供一个service服务,它会监听自己的独立端口
[root@bakup_server ~]# yum install rsync-daemon
Installed:
rsync-daemon-3.1.3-9.el8.noarch
[root@bakup_server ~]# systemctl enable rsyncd.service
Created symlink /etc/systemd/system/multi-user.target.wants/rsyncd.service → /usr/lib/systemd/system/rsyncd.service.
说明:
??rsync默认传输文件的时候不需要验证
启用rsync的验证功能的方法:
[root@backup-centos8 ~]#dnf -y install rsync-daemon
#安装服务的时候自动创建rsync服务器的配置文件
[root@centos8 ~]#vi /etc/rsyncd.conf
uid = root #远程用户映射到本机的用户,默认为nobody
gid = root #默认为nobody
#port = 874 #可指定非标准端口,默认873/tcp
#use chroot = no
max connections = 0 #不限制最大连接数
ignore errors #如果有些错误,就跳过这些错误
exclude = lost+found/ #跳过指定的目录,不去复制
log file = /var/log/r