Rsync远程同步知识点总结

Rsync:
简介:是一个开源的快速备份工具、可以在不同主机之间镜像同步整个目录,支持增量备份,保持链接(硬链接、软连接)和权限,且采用优化同步算法,传输前执行压缩(传输过程中效率加快了,但是会增加cpu的负载)。

核心作用:
对静态数据进行增量备份。
以服务状态运行:负责发起rsync同步操作的称为发起端,负责响应rsync同步操作的称为同步源。

工作模式

本地模式(本地同步):使用方法类似于cp命令;
格式:rsync  [选项]  源目录  目标目录
通过远程shell访问模式(远程同步):使用方法类似于scp命令;
格式:rsync  [选项]  本地目录	    IP:绝对路径 
      rsync  [选项]  IP:绝对路径  本地目录 
守护进程模式:(将rsync作为一个同步服务启动,rsync作为一个守护进程在后台运行,时刻监听默认端口873)    

格式:

1、rsync	[选项]   本地目录   用户名@主机地址::共享模块名  (上传)
rsync    [选项]   用户名@主机地址::共享模块             (下载)

2、rsync   [选项]	本地目录	rsync://用户名@主机地址/共享模块名(上传)
rsync  [选项]	rsync://用户名@主机地址/共享模块名	本地目录(下载)

常用选项:(组合:-vzrtopg;-avz)

-a:归档模式,递归并保留对象属性,等同于-rlptgoD
-v:显示同步过程的详细信息;
-z:在传输文件时进行压缩;
-H:保留硬链接文件;
-A:保留ACL属性信息;
--delete:删除目标位置有而原始位置没有的文件;
--checksum:根据对象的校验和来决定是否跳过文件;
-r:递归模式,包含目录及子目录中所有文件;
-l:对于符号链接文件仍然复制为符号链接文件;
-p:保留文件的权限标记;
-t:保留文件的时间标记;
-g:保留文件的属组标记(仅超级用户使用);
-o:保留文件的属主标记(仅超级用户使用);
-D:保留设备文件及其他特殊文件
--bwlimlit=KBPS:限制传输速率;
注:使用rsync命令时,目录名后需要/,否则就是将目录同步过去了!
配置内容:进程文件的位置;日志文件的位置;设置端口号;模块设置;

rsync+inotify实时同步:

定期同步的不足:执行备份的时间固定,延迟明显,实时性差,当同步源长期不变化时,密集的定期任务是不必要的。
实时同步的好处:一旦同步源出现变化,立刻启动备份,如果同步源不发生变化,则不执行备份。
Linux内核的inotify机制:可以监控文件系统的变动情况,并作出通知响应;
辅助软件:inotify-tools
Inotifywait:用于持续监控,实时输出结果
Inotifywatch:用于短期监控,任务完成后再出结果
选项:-m:持续运行进程
-r:递归
-q:以简洁模式输出信息
-e:指定监控的动作类型(modify修改;create修改;move移动;delete删除,中间用逗号分隔)
格式:inotifywait -mrq -e modify,create,move,delete /var/www/html

实时同步脚本:

#!/bin/bash
# rsync+inotify实时同步脚本
#变量
INOTIFY_CMD="/usr/local/bin/inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="/usr/bin/rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ 
backuper@192.168.100.101::wwwroot"
#read:从标准输入中,取值赋予变量
#脚本意思是只要后面这三个变量被赋值了,就执行$RSYNC_CMD
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -eq 0 ] ; then
        $RSYNC_CMD
    fi
done

后台执行脚本

nohup /bin/bash /opt/inotify.sh &		// nohup 可以保证当前执行程序的用户登出当前系统后,当前程序不停止,仍然执行后台程序。
posted @ 2022-01-26 23:33  高宏宇  阅读(92)  评论(0编辑  收藏  举报