设为首页 收藏本站
查看: 696|回复: 0

[经验分享] rsync+inotify+ssh远程实时增量同步

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-7 08:59:50 | 显示全部楼层 |阅读模式
一、准备工作-主服务器:
     Rsync,发起端
       Inotify
       Ssh
       IP:192.168.10.128
-备份服务器
       ssh,备份端
       IP:192.168.10.129
二、部署过程1、备份端建立上传用户,并设置权限-创建用户
1
2
[iyunv@backup ~]# useradd rput
[iyunv@backup ~]# passwd rput



-为同步目录设置访问权限
1
2
3
[iyunv@backup ~]# chown -R rput:rput/var/www/html/
[iyunv@backup ~]# ls -ld /var/www/html/
drwxr-xr-x. 2 rput rput 4096 8月  14 2013 /var/www/html/





2、发起端操作-创建ssh密钥对,实现免交互--创建密钥对
1
2
3
4
5
6
7
8
[iyunv@master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa): #回车
Enter passphrase (empty for no passphrase):#回车
Enter same passphrase again: #回车
Your identification has been saved in/root/.ssh/id_rsa.
Your public key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:



--将公钥发送至对端服务器
1
[iyunv@master ~]# ssh-copy-id rput@192.168.10.129





-配置inotify--调整inotify内核参数
1
2
3
4
5
[iyunv@master ~]# vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[iyunv@master ~]# sysctl –p



---注:
1
2
3
max_queue_events:监控队列大小
max_user_instances:最多监控实例数
max_user_watches:每个实例最多监控文件数



-安装inotify-tools辅助工具
1
2
3
4
5
6
7
8
9
[iyunv@master ~]# cd /usr/src/
[iyunv@master src]# ll
总用量 360
drwxr-xr-x. 2 root root   4096 9月  23 2011 debug
-rw-r--r--. 1 root root 358772 9月  25 20:53inotify-tools-3.14.tar.gz
drwxr-xr-x. 3 root root   4096 9月  25 19:35 kernels
[iyunv@master src]# tar zxfinotify-tools-3.14.tar.gz
[iyunv@master src]# cd inotify-tools-3.14
[iyunv@master inotify-tools-3.14]#./configure && make && make install



-编写脚本实现远程实时增量同步
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[iyunv@master ~]# vim rsync_inotify_ssh.sh
#!/bin/bash

rsync_cmd="rsync -azH --delete/var/www/html/ rput@192.168.10.129:/var/www/html"

inotify_cmd="inotifywait -mrq -emodify,create,attrib,move,delete /var/www/html/"

$inotify_cmd | while read a b c
do
       if [ $(pgrep ^rsync$ | wc -l) -le 0 ];then
                $rsync_cmd
       fi
done

[iyunv@master ~]# chmod 755rsync_inotify_ssh.sh





三、测试-发起端
1
2
3
4
5
[iyunv@master ~]# /root/rsync_inotify_ssh.sh&
[1] 6788

[iyunv@master ~]# touch /var/www/html/test1
[iyunv@master ~]# touch /var/www/html/test2




-备份端
1
2
3
4
[iyunv@backup ~]# ll /var/www/html/
总用量 0
-rw-r--r--. 1 rput rput 0 9月  25 2016 test1
-rw-r--r--. 1 rput rput 0 9月  25 2016 test2




四、附录1、rsync命令用法-基本格式:
rsync [选项] 原始位置 目标位置
-常用选项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
   -a:归档模式,递归并保留对象属性,等同于–rlptgoD
        --注:
      -r:递归模式,包含目录及子目录中所有文件
            -l:对于符号链接文件仍然复制为符号链接文件
            -p:保留文件的权限标记
            -t:保留文件的时间标记
            -g:保留文件的属组标记(仅超级用户使用)
            -o:保留文件的属主标记(仅超级用户使用)
            -D:保留设备文件及其他特殊文件
    -v:显示同步过程的详细(verbose)信息
    -z:在传输文件时进行压缩(compress)
    -H:保留硬连接文件
    -A:保留ACL属性信息
    --checksum:根据对象的校验和来决定是否跳过文件



2、关于inotify-参考:
https://www.centos.bz/2012/06/inotify-tools-introduction/
    inotifywait:用于持续监控,实时输出结果
    inotifywatch:用于短期监控,任务完成后再出结果
-语法:
    inotifywait [-hcmrq] [-e ] [-t ][–format ][–timefmt ] [… ]
-常用选项:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
-h,–help
    输出帮助信息
@
    排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
–fromfile
    从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-m, –monitor
    接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出。
-d, –daemon
    跟–monitor一样,除了是在后台运行,需要指定
–outfile
    把事情输出到一个文件。也意味着使用了–syslog。
-o, –outfile
    输出事情到一个文件而不是标准输出。
-s, –syslog
    输出错误信息到系统日志
-r, –recursive
    监视一个目录下的所有子目录。
-q, –quiet
    指定一次,不会输出详细信息,指定二次,除了致命错误,不会输出任何信息。
–exclude

    正则匹配需要排除的文件,大小写敏感。
–excludei

    正则匹配需要排除的文件,忽略大小写。
-t,–timeout

    设置超时时间,如果为0,则无限期地执行下去。
-e, –event
    指定监视的事件。
-c, –csv
    输出csv格式。
–timefmt
    指定时间格式,用于–format选项中的%T格式。
–format
    指定输出格式。
%w
    表示发生事件的目录
%f
    表示发生事件的文件
%e
    表示发生的事件
%Xe
    事件以“X”分隔
%T
    使用由–timefmt定义的时间格式





-可监听事件

access

文件读取

modify

文件更改。

attrib

文件属性更改,如权限,时间戳等。

close_write

以可写模式打开的文件被关闭,不代表此文件一定已经写入数据。

close_nowrite

以只读模式打开的文件被关闭。

close

文件被关闭,不管它是如何打开的。

open

文件打开。

moved_to

一个文件或目录移动到监听的目录,即使是在同一目录内移动,此事件也触发。

moved_from

一个文件或目录移出监听的目录,即使是在同一目录内移动,此事件也触发。

move

包括moved_to和 moved_from

move_self

文件或目录被移除,之后不再监听此文件或目录。

create

文件或目录创建

delete

文件或目录删除

delete_self

文件或目录移除,之后不再监听此文件或目录

unmount

文件系统取消挂载,之后不再监听此文件系统。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-310762-1-1.html 上篇帖子: ambari2.0.0,hadoop2.6重启namenode报错 下篇帖子: Linux之nfs 部署和优化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表