技术分享
rsync同步工具
2021-04-28
linux rsync同步工具
1、rsync介绍
rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。rsync软件适用于unix/linux/windows等多种操作系统平台。
rsync和ssh带的scp命令比较相似,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以进行增量拷贝。当然,rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝.利用rsync还可以实现删除文件和目录功能,这又相当于rm命令。
2、rsync特性
支持拷贝特殊文件如链接文件,设备等。
可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。
可实现增量同步,即可同步发生变化的数据,因此数据传输效率很高。
可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)。
可以通过socket传输文件和数据。
支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。
3、rsync工作场景
两台服务器之间数据同步。
把所有客户服务器数据同步到备份服务器,生产场景集群架构服务器备份方案。
rsync结合inotify的功能做实时的数据同步
4.rsync的参数选项
rsync基础用法
同步本地数据
rsync -a --delete /home backups/ rsync -a --delete /home/ backups/ 在指定复制源时,路径是否有最后的 “/” 有不同的含义,例如: • /home : 表示将整个 /home 目录复制到目标目录 • /home/ : 表示将 /home 目录中的所有内容复制到目标目录
基于ssh的rsync远程同步数据(推)
rsync -v /etc/hosts root@192.168.0.128:
基于ssh的rsync远程同步数据(拉)
rsync -v root@192.168.0.128:/etc/*.conf /bak/
拉之前必须确保对端主机安装了rsync工具
筛选rsync的传输目标
使用–exclude/–include选项
rsync -a /repo --exclude "profile.d/" root@192.168.0.128:/mnt/ /images 目录下除过profile.d的文件,其他文件都同步到/mnt目录 rsync -a /repo --include ""
使用 --exclude-from/–include-from 选项
当 include/exclude 的规则较复杂时,可以将规则写入规则文件。使用规则文件可以灵活地选择
传输哪些文件(include)以及忽略哪些文件(exclude)。
• 若文件/目录在剔除列表中,则忽略传输
• 若文件/目录在包含列表中,则传输
• 若文件/目录未被提及,也传输
在 rsync 的命令行中使用 --exclude-from=FILE 或 --include-from=FILE 读取规则文件。
规则文件 FILE 的书写约定:
• 每行书写一条规则 RULE
• 以 # 或 ; 开始的行为注释行
包含(include)和排除(exclude)规则的语法如下: • include PATTERN 或简写为 + PATTERN • exclude PATTERN 或简写为 – PATTERN
PATTERN 的书写规则如下:
• 以 / 开头:匹配被传输的跟路径上的文件或目录
• 以 / 结尾:匹配目录而非普通文件、链接文件或设备文件
• 使用通配符
• *:匹配非空目录或文件(遇到 / 截止)
• **:匹配任何路径(包含 / )
• ?:匹配除了 / 的任意单个字符
• [:匹配字符集中的任意一个字符,如 [a-z] 或 [[:alpha:]]
• 可以使用转义字符 \ 将上述通配符还原为字符本身含义
配置匿名rsync服务
yum源安装:
只需yum安装rsync和xinetd
yum -y install rsync xinetd
uid = nobody gid = nobody use chroot = yes max connections = 4 pid file = /var/run/rsyncd.pid exclude = lost+found/ transfer logging = yes timeout = 900 ignore nonreadable = yes dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 [repo] path = /images commment = pub area
mkdir /images
cp /etc/*.conf /images
配置防火墙规则
firewall-cmd --add-service=rsyncd --per firewall-cmd --reload firewall-cmd --list-all
启用并启动服务
systemctrl start rsyncd systemctrl enable rsyncd
从远程rsync服务器同步数据
rsync -a rsync://192.168.0.128:/repo/ /mnt/
就能把192.168.0.128主机的 /images目录下的数据同步到本机/mnt下
配置Rsync服务器,需要将共享目录的SELinux Context(上下文)配置为指定类型的上下文,否则目录无法访问
获取系统默认定义的所有类型的上下文,使用semanage fcontext -l
查看文件的上下文,在使用ls -l时,加上Z选项,也就是ls -lZ
例如
ll -Z /
配置上下示例
临时配置,在autorelabel时,会恢复默认上下文
chcon -t public_content_t /images
永久配置上下文,在autorelabel时,还是会恢复到自定义的上下文类型
#semanage fcontext -a -t public_content_t “/images(/.*)?”
#restorecon -Rv /images
恢复上下文为自定义的public_content_t
- 标签:
-
其他