旧,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>    服务端密码文件里保存的用户名和密码不正确

posted @ 2018-06-03 15:56  IT小能手  阅读(130)  评论(0编辑  收藏  举报