一、介绍
1.1、rsync 对比 scp
相同: 都有拷贝的功能 不同: rsync:具有增量复制,每次复制的时候,会扫描对端是否在同路径下有我要发送的一样的文件或者目录,如果,如果存在,则不进行复制。边复制,边统计,边比较。而且rsync是先对比后,在传输,所以会发现使用rsync 传输后,发现会卡在那 scp: 不具备增量复制 Rysnc特性和优点: 可以镜像保存整个目录树和文件系统 可以很容易做到保持原来文件的权限、时间、软硬链接等等无须特殊权限即可安装。 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件 压缩传输: rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽. 跟http一样压缩传输 安全: 可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接支持匿名传输,以方便进行网站镜象。 选择性保持:符号连接,硬链接,文件属性,权限,时间等 Rysnc缺点:每次都需要扫面,所以会占用I/O,cpu等
Linux 系统默认安装rsync(最小化安装没有rsync)
Linux 不依赖ssh,需要两端都有rsync
1.2、rsync的默认算法
在man rsync的文档里可以看到:
Rsync finds files that need to be transferred using a "quick check" algorithm (by default) that looks for files that have changed in size or in last-modified time.
Any changes in the other preserved attributes (as requested by options) are made on the destination file directly when the quick check indicates that the file』s data does not need to be updated.
即默认rsync只会比较文件大小和最后修改时间,只要这两者一样,rsync即认为文件相同。其它属性(包括文件内容)的不同,并不会让rsync同步该文件!
1.3、查看rsync版本
rsync --version
1.4、rsync传输模式(数据同步方式)
推push: 一台主机负责把数据传送给其他主机,服务器开销很大,比较适合后端服务器少的情况(比如大于10台,考虑节点量很大,发送到第10期间,有新的数据,可能存在再一次给第一个机器发送数据进行)
拉pull: 所有主机定时去找一主机拉数据,可能就会导致数据缓慢---- 自动化& 虚拟化 --> CI/CD docker推:目的主机配置为rsync服务器,源主机周期性的使用rsync命令把要同步的目录推过去需要备份的机器是客户端,存储备份的机器是服务端)
拉:源主机配置为rsync服务器,目的主机周期性的使用rsync命令把要同步的目录拉过来(需要备份的机器是服务端,存储备份的机器是客户端两种方案,rsync都有对应的命令来实现
1.5、xinetd
Xinetd 是管理 Rsync 的工具,他还可以管理其他的工具比如FTFP, 类似 (TFTP) 进行管理轻量级的小服务,默认Linux 6 版本都是通过xinetd服务进行管理的,默认在xinetd目录下,在比如 tftp 保存在xinetd目录下,7版本rsync可以自己管理
PXE:无人值守
二、部署
2.1、规划
IP hostname /etc/redhat-release
192.168.206.5 master01 CentOS Linux release 7.5.1804 (Core)
192.168.206.6 master02 CentOS Linux release 7.5.1804 (Core)
2.2 、安装rsync(都需要)
yum install -y rsync xinetd # xintend 可以不装,由于我是最小化安装Centos,所以需要安装rsync
[root@master01 ~]# rpm -qa rsync
rsync-3.1.2-12.el7_9.x86_64
[root@master01 ~]# rpm -qa xinetd
xinetd-2.3.15-14.el7.x86_64
[root@master01 ~]# rpm -ql rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
/usr/bin/rsync
/usr/lib/systemd/system/rsyncd.service
/usr/lib/systemd/system/rsyncd.socket
/usr/lib/systemd/system/rsyncd@.service
/usr/share/doc/rsync-3.1.2
/usr/share/doc/rsync-3.1.2/COPYING
/usr/share/doc/rsync-3.1.2/NEWS
/usr/share/doc/rsync-3.1.2/OLDNEWS
/usr/share/doc/rsync-3.1.2/README
/usr/share/doc/rsync-3.1.2/support
/usr/share/doc/rsync-3.1.2/support/Makefile
/usr/share/doc/rsync-3.1.2/support/atomic-rsync
/usr/share/doc/rsync-3.1.2/support/cvs2includes
/usr/share/doc/rsync-3.1.2/support/deny-rsync
/usr/share/doc/rsync-3.1.2/support/file-attr-restore
/usr/share/doc/rsync-3.1.2/support/files-to-excludes
/usr/share/doc/rsync-3.1.2/support/git-set-file-times
/usr/share/doc/rsync-3.1.2/support/instant-rsyncd
/usr/share/doc/rsync-3.1.2/support/logfilter
/usr/share/doc/rsync-3.1.2/support/lsh
/usr/share/doc/rsync-3.1.2/support/lsh.sh
/usr/share/doc/rsync-3.1.2/support/mapfrom
/usr/share/doc/rsync-3.1.2/support/mapto
/usr/share/doc/rsync-3.1.2/support/mnt-excl
/usr/share/doc/rsync-3.1.2/support/munge-symlinks
/usr/share/doc/rsync-3.1.2/support/rrsync
/usr/share/doc/rsync-3.1.2/support/rsync-no-vanished
/usr/share/doc/rsync-3.1.2/support/rsync-slash-strip
/usr/share/doc/rsync-3.1.2/support/rsyncstats
/usr/share/doc/rsync-3.1.2/support/savetransfer.c
/usr/share/doc/rsync-3.1.2/tech_report.tex
/usr/share/man/man1/rsync.1.gz
/usr/share/man/man5/rsyncd.conf.5.gz
[root@master01 ~]# rpm -ql xinetd
/etc/sysconfig/xinetd
/etc/xinetd.conf
/etc/xinetd.d/chargen-dgram
/etc/xinetd.d/chargen-stream
/etc/xinetd.d/daytime-dgram
/etc/xinetd.d/daytime-stream
/etc/xinetd.d/discard-dgram
/etc/xinetd.d/discard-stream
/etc/xinetd.d/echo-dgram
/etc/xinetd.d/echo-stream
/etc/xinetd.d/tcpmux-server
/etc/xinetd.d/time-dgram
/etc/xinetd.d/time-stream
/usr/lib/systemd/system/xinetd.service
/usr/sbin/xinetd
/usr/share/doc/xinetd-2.3.15
/usr/share/doc/xinetd-2.3.15/CHANGELOG
/usr/share/doc/xinetd-2.3.15/COPYRIGHT
/usr/share/doc/xinetd-2.3.15/README
/usr/share/doc/xinetd-2.3.15/empty.conf
/usr/share/doc/xinetd-2.3.15/sample.conf
/usr/share/man/man5/xinetd.conf.5.gz
/usr/share/man/man5/xinetd.log.5.gz
/usr/share/man/man8/xinetd.8.gz
[root@master01 ~]#
可以看到 xinetd 下已经没有 rsync
[root@master01 ~]# ll /etc/xinetd.d/
-rw-------. 1 root root 1157 4月 1 2020 chargen-dgram
-rw-------. 1 root root 1159 4月 1 2020 chargen-stream
-rw-------. 1 root root 1157 4月 1 2020 daytime-dgram
-rw-------. 1 root root 1159 4月 1 2020 daytime-stream
-rw-------. 1 root root 1157 4月 1 2020 discard-dgram
-rw-------. 1 root root 1159 4月 1 2020 discard-stream
-rw-------. 1 root root 1148 4月 1 2020 echo-dgram
-rw-------. 1 root root 1150 4月 1 2020 echo-stream
-rw-------. 1 root root 1212 4月 1 2020 tcpmux-server
-rw-------. 1 root root 1149 4月 1 2020 time-dgram
-rw-------. 1 root root 1150 4月 1 2020 time-stream
[root@master01 ~]#
2.3 、rsync 服务启动(都需要)
[root@master01 ~]# rsync --daemon
[root@master01 ~]# netstat -tulpn |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 19367/rsync
tcp6 0 0 :::873 :::* LISTEN 19367/rsync
[root@master01 ~]#
2.4、rsync 参数 (标红重点)
rsync命令和scp命令很相似
-a,--archive archive mode 权限保存模式, 相当于 -rlptgoD 参数,存档,递归,保持属性等-r,--recursive 复制所有下面的资料,递归处理
-l,--links 复制所有的连接,拷贝连接文件
-p,--perms 保留档案权限 ,文件原有属性
-t,--times 保留时间点,文件原有时间
-g,--group 保留原有属组
o,--owner 保留档案所有者(root onlv
D,--devices 保留device资讯(root only)
-z,--compress 压缩模式, 当资料在传送到目的端时候,在传输的时候,会对源文件进行压缩处理,在传递给目标后进行解压,只是提高传输速度,压缩过程是rsync内部进行转换,并不会对源有文件进行修改
H.--hard-links 保留硬链接文件
A, --acls 保留ACL属性文件,需要配合--perms
P, -P参数和 --partial --progress 相同.只是为了把参数简单化,表示传输进度
--version,输出rsync版本
-v,--verbose 执行过程中,显示复杂的详细输出信息-u, --update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件。也就是如果DEST中的文件比SRC新,则不同步即。默认
rsync只会比较文件大小和最后修改时间,只要这两者一样,rsync即认为文件相同。其它属性(包括文件内容)的不同,并不会让rsync同步该文件,

文章详细介绍了rsync与scp在文件同步方面的区别,强调了rsync的增量复制特性,并通过实例展示了rsync的各种参数如-a,-u,--delete的用途。还介绍了rsync服务的启动与配置,以及如何通过rsync守护进程rsyncd和工具xinetd进行管理。此外,文章还探讨了rsync在自动化备份场景中的应用,并提到了sersync作为实时同步工具的优势。
最低0.47元/天 解锁文章
935

被折叠的 条评论
为什么被折叠?



