旧,html
rsync是一个开源的快速备份工具,能够在不一样主机之间镜像同步整个目录树,支持增量备份,保持 连接权限,且采用优化的同步算法,传输前执行压缩,所以很是适用于异地备份,镜像服务器等应用linux
在远程同步任务中,负责发起rsync同步操做的客户机称为发起端,而负责响应来自客户机的rsync同步操做的服务器称为同步源,在同步过程当中,同步源负责提供文档的原始位置,发起端对该位置具备读取权限,如图算法
配置rsync同步源(在同步源上配置,如图服务器A)服务器
rsync做为同步源时以守护进程运行,为其余客户机提供备份源。配置rsync同步源须要创建配置文件/etc/rsyncd.conf,建立备份帐号,而后将rsync程序以‘--daemon’选项运行工具
vi /etc/rsyncd.conf优化
_______________________________________________________________________________________________________________ui
uid=root #以哪一个用户的身份来传输
gid=root #以哪一个组的身份来传输
use chroot = yes #禁锢在源目录
address=192.168.0.10 #监听地址
port=873 #监听端口默认为873,也能够是别的端口
log file=/var/log/rsync.log #指定日志位置
pid file=/var/run/rsyncd.pid #指定pid文件位置spa
以上部分为全局配置部分,如下为模块内的设置日志
[wwwroot] #共享模块名,自定义
path=/var/www/html #源目录的实际路径
use chroot=true #是否限定在该目录下,默认为true,当有软链接时,须要改成fasle,若是为true就限定为模块默认目录
max connections=4 # 指定最大能够链接的客户端数
read only=no #是否为只读,若是是yes的话,客服端推送给服务端的时候不成功,这时候要改为no
list= no #是否能够列出模块名 rsync --port 8730 172.16.37.139:: 若是为yes的话会列出服务端全部的模块名字。
comment = Document root of it小能手 #描述信息
dont compress = *.gz *.tgz #同步时不在压缩的文件类型
auth users=test #指定受权帐户
secrets file=/etc/rsyncd.passwd #存放帐号信息的数据文件,若是设定验证用户,这一项必须设置,设定密码权限为400.
hosts allow=192.168.0.101 #设置能够容许访问的主机,能够是网段,多个Ip地址用空格隔开code
____________________________________________________________________________________________________________________
建立帐号数据文件/etc/rsyncd.passwd的内容格式为:backuper:pwd123(username:password)
启动服务的命令是:rsync --daemon
默认去使用/etc/rsyncd.conf这个配置文件,也能够指定配置文件 rsync --daemon --config=/etc/rsyncd2.conf,更改配置文件不用重启服务,即时生效。
同步时能够采用匿名的方式,只要将其中的auth user 和secrets file 配置记录去掉就能够了
备份用户backuper须要对源目录/var/www/html 有相应的读取权限。实际上只要other组有读取权限,则备份用户backuper和运行用户nobody也就有读取权限了
ls -ld /var/www/html
drwxr-xr-x. 2 root root 4096 5 月 2 2018 /var/www/html
rsync命令的基本用法(在发起端上执行rsync命令,如上图服务器B)
rsync [选项] 原始位置 目标位置
rsync 命令须要指定同步源服务器中的资源位置。rsybc同步源的资源位置表示方式为 “username@主机地址::共享模块名” 或者 "rsync://username@主机地址/共享模块名"
例如: rsync -avz backuper@192.168.4.200::wwwroot /root 或者 rsync -avz rsync://backuper@192.168.4.200/wwwroot /root
经常使用选项如
-r : 递归模式,包含目录及子目录中的全部文件|
-l : 对于符号连接文件仍然复制为符号连接文件
-v : 显示同步过程当中的详细信息
-a :归档模式,保留文件的权限,属性等信息 等同于组合选项“-rlptgoD”
-z : 在传输文件时进行压缩
-p : 保留文件的权限标记
-t : 保留文件的时间标记
-g :保留文件的属组标记(仅超级用户使用)
-o : 保留文件的属主标记(仅超级用户使用)
-H:保留硬连接文件
-A : 保留ACL属性信息
-D :保留设备文件及其其余特殊文件
--delete: 删除目标位置有而原始位置没有的文件
--checksum: 根据校验和(而不是文件大小,修改时间)来决定是否跳过文件
--password-file=密码文件路径和名 ,为了在同步过程当中不用输入密码,须要建立一个密码文件,保存备份用户的密码,在执行rsync同步时使用选择‘“--password-file=”指定便可
rsync+inotify 实时同步
inotify通知接口,用来监控文件系统的各类变化,如文件存取,删除,移动,修改等。利用这一机制,能够很是方便地实现文件异动告警,增量备份,并针对目录或文件的变化及时做出响应
将rsync工具和inotify机制相结合,能够实现触发式备份(实时同步)--------只要原始位置的文档发生变化,则当即启动增量备份操做,不然处于静态等待状态。这样就避免了按固定周期备份时存在的延迟性,周期过密等问题。
由于inotify通知机制由linux内核提供,所以主要作本机监控,在触发式备份中应用时更适合上行同步
配置
1.调整inotify内核参数
在linux内核中,默认的inotify机制提供三个调控参数:max_queue_events,max_user_instances,max_user_watches,分别表示监控事件队列(16384),最多监控实例数(128),每一个实例最多监控文件数(8192)
cat /proc/sys/fs/inotify/max_queue_events
16384
cat /proc/sys/fs/inotify/max_user_instances
128
cat /proc/sys/fs/inotify/max_user_watches
8192
未完待续。。。。
常见错误
@ERROR: auth failed on module wwwroot (wwwroot 是本身的模块名)
rsync error: error startingclient-serverprotocol (code 5) at main.c(1503) [sender=3.0.6]
查看 服务端/etc/rsync.password(存放帐号密码信息的文件) 配置文件是否有问题
好比:
多余的空格 空行
错误缘由
1> 客户端密码文件的权限不是600
2> 服务端密码文件不是600
3> 服务端密码文件不存在(名字写错了/没有建立/配置文件参数写错了)
4> 服务端密码文件里保存的用户名和密码不正确