旧,rsync
旧,
rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持 链接权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份,镜像服务器等应用
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源,在同步过程中,同步源负责提供文档的原始位置,发起端对该位置具有读取权限,如图
配置rsync同步源(在同步源上配置,如图服务器A)
rsync作为同步源时以守护进程运行,为其他客户机提供备份源。配置rsync同步源需要建立配置文件/etc/rsyncd.conf,创建备份账号,然后将rsync程序以‘--daemon’选项运行
vi /etc/rsyncd.conf
_______________________________________________________________________________________________________________
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文件位置
以上部分为全局配置部分,以下为模块内的设置
[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地址用空格隔开
____________________________________________________________________________________________________________________
创建账号数据文件/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> 服务端密码文件里保存的用户名和密码不正确