Rsync是一款开源的,快速的,多功能的,可实现全量及增量(差异化备份)的本地或远程数据同步备份的优秀工具。
Rsync软件适用于Unix、Linux、Windows等多种操作系统。
(1)可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能,这个功能类似ssh带scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。
(2)rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,
(3)利用rsync还可以实现删除文件和目录的功能。相当于rm
(4)rsync相当于scp,cp.rm但是还优于他们每一个命令。
在同步备份数据时,默认情况下rsync通过独特的“quick check” 算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可以是根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以可以实现快速的同步备份数据。
1.能更新整个目录树和文件系统;
2. 有选择性的保持符号链链、硬链接、文件属性、权限、设备以及时间等;
3. 传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
4. 能用rsh、ssh 或直接端口做为传输端口;
5. 支持匿名rsync 同步文件,是理想的镜像工具;
Rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时Rsync server会打开一个873端口,等待客户端去连接。
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客机的rsync同步操作的服务器称为备份源。
虚拟机版本 | VMware® Workstation 16 Pro 16.2.4 build-20089737 |
镜像版本 | CentOS-7-x86_64-DVD-1708.iso |
rsync版本 | rsync-3.1.2-12.el7_9.x86_64 |
源服务器地址 | 192.168.254.106/24 |
客户机地址 | 192.168.254.107/24 |
通过配置Rsync远程同步来完成下行同步
服务端配置
关闭防火墙
systemctl stop firewalld
setenforce 0
查看rsync服务
rpm -q rsync #一般已默认安装rsync
修改/etc/rsyncd.conf 配置文件
uid = root
gid = root
use chroot = yes //禁锢在源目录
address = 192.168.254.106 //监听地址
port 873 //监听端口
log file = /var/log/rsyncd.log //指定日志文件
pid file = /var/run/rsyncd.log //指定存放进程id的文件
host allow = 192.168.254.0/24 //指定客户机网段
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 //以下文件格式传输时不再压缩
[myhtml] //共享模块名称
path = /var/www/html //备份源数据路径
comment = this is rsync of www.wcy.com //备注信息
read only = yes //设置客户端只读
auth users = lisi //授权用户名字
secrets file = /etc/rsyncd_users.d //存放授权用户的信息文件路径
#如采取匿名的方式,只要将其中的“auth users” 和 “secrets file” 配置项去掉即可。
保证所有用户对源数据目录/var/www/html都有读取权限
vim /etc/rsyncd_users.db //创建数据文件,输入用户和密码
chmod 600 /etc/rsyncd_users.db //更改文件权限
lisi:123456
rsync --deamon //启动服务
#关闭rsync服务
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid
客户端配置
rsync -avz [email protected]::test /opt/ //进行测试
格式
rsync [选项] 原始位置 目标位置
选项 作用
-r 递归模式,包含目录及子目录中的所有文件
-l 对于符号链接文件仍然复制为符号链接文件
-v 显示同步过程的详细(verbose)信息
-v 在传输文件时进行压缩(compress)
-a 归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgop"
-p 保留文件的权限标记
-t 保留文件的时间标记
-g 保留文件的属组标记(仅超级用户使用)
-o 保留文件的属主标记(仅超级用户使用)
-H 保留硬连接文件
-A 保留ACL属性信息
-D 保留设备文件及其他特殊文件
--delete 删除目标位置有而原始位置没有的文件
--checksum 根据校验和(而不是文件大小、修改时间)来决定是否跳过文件
同步备份源
格式一:用户名@ip::共享模块名
rsync -avz [email protected]::myhtml /opt/ky/
格式二:rsync://用户名@IP/共享模块名
rsync -avz rsync://[email protected]/myhtml /opt/ky/rsync -avz -e 'ssh -p ssh端口号' 原始位置 目标位置
rsync -avz -e 'ssh -p 22' [email protected]:/var/www.html/ /opt/ky/
服务端放入文件
客户端进行接收
在客户端创建密码文件,密码文件权限必须为600,除了属主,其他人都没有查看权限
使用 --password-file命令
可以看出不需要密码了
还可以使用crontab -e 命令设置定时同步
使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。
虚拟机版本 | VMware® Workstation 16 Pro 16.2.4 build-20089737 |
镜像版本 | CentOS-7-x86_64-DVD-1708.iso |
rsync版本 | rsync-3.1.2-12.el7_9.x86_64 |
源服务器地址 | 192.168.254.106/24 |
客户机地址 | 192.168.254.107/24 |
通过配置Rsync远程同步来完成上传同步
服务端配置
修改rsync源服务器配置文件
vim /etc/rsyncd.conf
重启服务后修改目录权限
2、调整inotify内核参数
当要监控的目录、文件数量较大或者变化较为频繁时,建议加大这三个参数的值
vim /etc/sysctl.conf //通过修改配置文件更改参数
使用sysctl -p 检查
3、安装inotify-tools
用inotify 机制还需要安装inotify-tools, 以便提供inotifywait、 inotifywatch 辅助工具程序,用来监控、汇总改动情况。
解压缩安装包
tar zxvf inotify-tools-3.14.tar.gz -C /opt/
编译安装
./configure
make && make install
执行inotifywait命令,然后开启另一个新终端向/opt/kgc目录下添加文件、移动文件,在原来的终端中跟踪屏幕输出结果。
inotifywait -mrq -e modify,create,move,delete /opt/kgc
选项
-e:用来指定要监控哪些事件
-m:表示持续监控
-r:表示递归整个目录
-q:简化输出信息
在发起端,编写触发式同步脚本
在另外一个终端编写触发式同步脚本(注意,脚本名不可包含 rsync 字符串,否则脚本可能不生效)。
后台运行脚本
虚拟机版本 |
VMware® Workstation 16 Pro 16.2.4 build-20089737 |
镜像版本 |
CentOS-7-x86_64-DVD-1708.iso |
rsync版本 |
rsync-3.1.2-12.el7_9.x86_64 |
主服务器地址 |
192.168.254.106/24 |
通过使用rsync工具删除文件夹内的大量数据
Rpm -q rsync //检查rsync是否安装
mkdir /home/empty //创建空文件夹
mkdir /home/full
touch file.{1..1000} //创建含有大量文件的文件夹
rsync --delete-before -avH --progress --stats /home/empty/ /home/full/
rsync --delete-before接收者在接收者在传输进行删除操作
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-H 保持硬连接的文件
-v 详细输出模式
--progress 在传输时显示传输过程
--stats 给出某些文件的传输状态
/home/empty/ 指定空文件夹位置
/home/full/ 指定要删除文件夹位置