首页 > 其他分享 >Rsync

Rsync

时间:2022-12-09 20:02:18浏览次数:51  
标签:文件 Rsync 同步 inotify 备份 rsync html

目录:

1、概念

2、Rsync同步方式

3、优点

4、缺点

5、适用场景

6、常用Rsync命令

7、实验

8、Rsync实时同步

  Rsync+inotify问题

  实验

Rsync

概念

一款快速增量备份工具可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。 在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。 可实现全量备份与增量备份,保持链接和权限且采用优化的同步算法 传输前执行压缩,因此非常适合用于架构集中式备份或异地备份等应用。同时支持本地复制或者与其他 SSH、rsync 主机同步   本地复制与rsync区别: cp将源文件完整的复制到指定路径下 rsync做本地复制 ①首先将源文件和目标的位置文件做比对 ②根据目的位置的文件与源文件差异的部,进行一致性同步 0   0 监听的端口:873 C/S模式  

rsync同步方式:

(1)完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地。 (2)差异备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性) (3)增量备份:备份上次备份以后有变化的数据(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)  

优点:

(1)可以镜像保存整个目录树和文件系统。 (2)可以很容易做到保持原来文件的权限、时间、软硬链接等等。 (3)无须特殊权限即可安装。 (4)快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。 (5)安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 (6)支持匿名传输,以方便进行网站镜像。 (7)跨平台:可在不同操作系统之间同步数据  

缺点:

(1)客户端需要对多个文件数据块进行多次计算与比较验证码,对 CPU 的消耗比较大;服务端需要根据原文件和客户端传送过来的差异数据进行文件内容重组,对 IO 的消耗比较大。 (2)rsync 每次同步都需要先进行所有文件的扫描和计算、对比,最后才能进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且如果改动的只是其中很小的一部分,这就是非常低效的方式。 (3)rsync 不能实时的去监测、同步数据,虽然它可以通过 crontab 守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据(无法实现实时同步),而且繁忙的轮询会消耗大量的资源。  

适用场景

需要同步的文件改动越频繁,则客户端需要计算和比较的数据块验证码就越多(遇到数据块内容不相同时,只能跳过一个字节继续往后计算与比较,相同则可跳过一个数据块),对 CPU 的消耗就会越大;需要同步的文件越大,服务端每次都需要从一个很大的文件中复制相同的数据块进行新文件重组,几乎相当于直接 cp 了一个大文件,对 IO 的消耗也就越大。 所以 rsync 适合对改动不频繁、大小比较小的文件进行同步,对于改动频繁的大文件,只能偶尔同步一次,相当于备份的功能,而不是同步。  

常用Rsync命令

格式: rsync [选项] 原始位置 目标位置 选项: -r:递归模式,包含目录及子目录中的所有文件。 -l:对于符号链接文件仍然复制为符号链接文件。 -v:显示同步过程的详细(verbose)信息。 -z:在传输文件时进行压缩(compress) -a:归档模式,递归并保留对象属性,等同于 -rlptgoD -p:保留文件的权限标记。 -t:保留文件的时间标记 -g:保留文件的属组标记(仅超级用户使用) -o:保留文件的属主标记(仅超级用户使用) -H:保留硬连接文件 -A:保留ACL属性信息 -D:保留设备文件及其他特殊文件。 --delete:删除目标位置有而原始位置没有的文件 --checksum:根据对象的校验和来决定是否跳过文件  

实验:

rpm -q rsync #正常情况下已安装   vim /etc/rsyncd.conf uid = root gid = root use chroot = yes #禁锢在源目录 address = 192.168.63.100 #监听地址 port = 873 #监听端口号 tcp/udp 873 log file =/var/log/rsycd.log #日志地址 pid file = /var/run/rsyncd.pid #存放进程ID的文件位置 host allow =192.168.63.0/24 #允许访问的客户机地址 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 #同步时不再压缩的文件类型   [wwwroot] #共享模块名称 path = /var/www/html #原目录实际路径 comment = web service #备注 read only = yes #是否只读 auth users =backuper #授权账户,多个账号以空格分隔 secrets file = /etc/rsyncd_users.db #存放账户信息的数据文件 #如果采用匿名的方式,只要将其中的“auth users” 和“secrets file” 配置项去掉即可     vim /etc/rsyncd_users.db #为备份账户创建数据文件 backuper:123123 #建立同步用户   chmod 600 /etc/rsyncd_users.db #一定要600 权限(多了也不行)   yum install httpd -y chmod +r /var/www/html ls -ld /var/www/html   启动rsync rsync --daemon #守护进程后台运行 netstat -anpt |grep rsync       客户端: 配置   // 配置源的2种表达方法: ① 用户名@主机地址::共享模块名 rsync -avz [email protected]::wwwroot /opt/ ②rsync://用户名@主机地址/共享模块名 rsync -avz rsync://[email protected]/wwwroot /opt/ //   rsync -avz [email protected]::wwwroot /opt/ 密码:123123   免交互: echo "123123" > /etc/server.pass chmod 600 /etc/server.pass crontab -e 30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /opt/   systemctl restart crond systemctl enable crond   测试: 服务端: vim index.html this is abc 0     客户端: rsync -avz [email protected]::wwwroot /opt/ cd /opt ll 能看到同步了index 0   mv index.html index1.html rsync -avz [email protected]::wwwroot /opt/ ll 能看到再次同步过来index 0 rsync -avz --delete [email protected]::wwwroot /opt/ ll 能看到,与服务器不同的文件全部删除 0    

rsync实时同步

使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。 将inotify机制与rsync相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。 因为inotify通知机制由 Linux内核提供,因此主要做本机监控,在触发式备份中,应用时更适合上行同步。  

rsync + inotify 问题

1. 同一个操作会触发多个事件。 2. inotifywait 存在缺陷,当向监控目录下拷贝复杂层次目录(多层次目录中包含文件),或者向其中拷贝大量文件时,inotifywait 经常会随机性地遗漏某些文件。 3. 并发如果大于 200 个文件(10-100K),同步会有延迟。 4. 监控到事件后,调用 rsync 同步是单线程的。  

实验:

服务器 vim /etc/rsyncd.conf read only = no #修改只读模式为no   kill $(cat /var/run/rsyncd.pid) ss -ntap |grep rsync   chmod 777 /var/www/html/     客: 调整inotify内核参数 max_queue_events:监控队列大小 默认16384 max_user_instances:最多监控实例数 默认 128 max_user_watches:每个实例最多监控文件数 默认8192   cat /proc/sys/fs/inotify/max_queued_events 16383 cat /proc/sys/fs/inotify/max_user_instances 128 cat /proc/sys/fs/inotify/max_user_watches 8192   vi /etc/sysctl.conf fs.inotify.max_queued_events = 32768 fs.inotify.max_user_instances = 1024 fs.inotify.max_user_watches = 1048576   sysctl -p 0   安装inotify (发起端→客户端) 安装inotify-tools辅助工具 inotifywait:用于持续监控,实时输出结果(增删改属性修改) inotifywatch:用于短期监控,任务完成后再出汇总结果   yum install make gcc gcc-c++ -y cd /opt tar zxvf inotify-tools-3.14.tar.gz -C /opt cd inotify-tools-3.14/ ./configure make && make install   yum install httpd -y #可以先执行“inotifywait”命令,然后另外再开启一个新的终端向 /var/www/html 目录下添加文件、移动文件,在原来的终端中跟踪屏幕输出结果。 [root@localhost ~]# inotifywait -mrq -e modify,create,move,delete /var/www/html -e 用来指定要监控哪些事情 -m 表示持续监控 -r 表示递归整个目录 -q 简化输出信息 0   开启客户端的另外1个窗口后进行操作 vim /var/www/html/index1.html this is qwe 可以在客户端的第一个窗口看到变动   脚本触发 vim /opt/inotify.sh #!/bin/bash INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /var/www/html" RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html [email protected]::wwwroot" $INOTIFY_CMD | while read DIRECTORY EVENT FILE do if [ $(pgrep rsync | wc -l) -le 0 ] ; then $RSYNC_CMD   fi done   chmod +x /opt/inotify.sh chmod 777 /var/www/html/ chmod +x /etc/rc.d/rc.local echo '/opt/inotify.sh' >> /etc/rc.d/rc.local bash /opt/inotify.sh   测试: 服: rsync --daemon cd /var/www/html/   客: 上述脚本用来检测本机/var/www/html 目录的变动情况,一旦有更新发rsync 同步操作,上传备份至服务器 192.168.63.100 的 wwwroot共享目录下。 在本机(客户机)运行/opt/inotify.sh脚本程序 用客户机的另外1个窗口切换到本机(客户机)的/var/www/html目录 进行创建、修改等操作查看变化 查看服务端中的wwwroot目录下的变化   0   0   0 0   扩展: sersync可以去看一看 级联服务器: 0   查端口去看: 用telnet ,侦测端口,他还可以用来防断开(升级openssl) 0   参考: https://www.cnblogs.com/wujuntian/p/16410235.html  

标签:文件,Rsync,同步,inotify,备份,rsync,html
From: https://www.cnblogs.com/qfrg/p/16969857.html

相关文章

  • rsync远程同步
    一、rsync概述1.1rsync的概念rsync,remotesynchronize顾名思义就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加......
  • Rsync远程同步
    1、rsync介绍rsync(RemoteSync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩......
  • rsync远程同步
    一、rsync概述1、rsync的概念rsync,remotesynchronize顾名思义就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加......
  • rsync—远程同步
    一、rsync1.1rsync简介(1)rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的......
  • rsync远程同步
    一、rsync介绍1.1rsync简介rsync(RemoteSync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算......
  • rsync远程同步
    一、rsync概述1、rsync的概念rsync,remotesynchronize顾名思义就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加......
  • Rsync远程同步
    一、rsync概述1、rsync的概念是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非......
  • Rsync报错踩坑记录(一):一次小疏忽引发的麻烦及新手会遇到的三种常见报错原因
    Rsync报错踩坑记录(一)1.三种常见报错原因之一:防火墙问题造成该报错的原因是:客户端和服务端防火墙未放行873端口具体会出现如下错误提示:rsync:failedtoconnectto......
  • Linux 云计算集群架构师(第2阶段)->第二章 Rsync+sersync 实现数据实时同步
    第二章Rsync+sersync实现数据实时同步(上课时间:2021-07-29,笔记整理时间2021-08-1)本节所讲内容:2.1RSYNC概述2.2Rsync服务安装2.3Rsync+sersync实现数据实时同......
  • Linux rsync 如何实现自动文件同步?
    Linuxrsync如何实现自动文件同步?邱冬夏于 2022-05-3111:54:30 发布3372收藏8版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链......