rsync同步

同步与复制的差异:
复制:完全拷贝源到目标
同步:增量拷贝,只传输变化过的数据

同步操作:
remote sync 远程同步
支持本地复制,或与其他ssh,rsync主机同步。
官方网站:http://rsync.samba.org/

命令用法
rsync [选项] 源目录 目标目录
常用选项:
-a:归档模式,相当于-rlptgiD
-v:显示同步过程详细信息
-z:传输过程中启用压缩
-r:递归,包括目录/子目录及所有文件
-l:保留符号链接文件
-p,-t:保留文件的权限,时间标记
-o,-g:保留文件的属主/属组标记
-D:保留设备文件及其他特殊文件
-H:保留硬链接文件
-A:保留文件的ACL属性信息
-n:测试同步过程,不做实际修改
--delete:删除目标文件夹内多余的文档(确保源和目标完全一致)

本地同步
rsync [选项] 本地目录1 本地目录2
rsync [选项] 本地目录1/ 本地目录2

[root@svr ~]# rsunc -a /boot /xxx(同步整个文件夹)
[root@svr ~]# rsunc -a /boot/ /xxx/(只同步目录下数据)

服务端要求:服务端应开启sshd服务,并提供授权的用户,密码,此目录对远程目录必须有相应的权限
rsync+ssh远程同步
下行同步:rsync [选项] root@x远程目录/ 本地目录
上行同步:rsync [选项] 本地目录/ root@x远程目录

下行同步实例:
[root@svr ~]# rsync root@192.168.4.1:/boot/(浏览远程目录)
[root@svr ~]# rsync -av root@192.168.4.1:/boot/ /xxx/(将远程主机/boot/目录备份到本地)
[root@svr ~]# ls /xxx/(查看结果)
上行同步实例:
[root@svr etc]# rsync -av /etc root@192.168.4.1:/opt/(将本地的/etc/目录备份到远程主机)
[root@gw1 opt]# ls(远程机查看结果)
rh

————————————————————————————————————————————
rsync+rsync远程同步

同步资源配置文件/etc/rsyncd.conf
[root@svr ~]# chkconfig rsync on(开启)
[root@svr ~]# service xinetd restart(重启服务)

创建rsyncd.conf共享配置(若是匿名共享。可去掉auth users设置)
[root@svr ~]# vim /etc/rsyncd.conf
[hydra] (共享文件名)
path = /usr/src(共享文件目录)
comment = Rsunc Share Test
read only = yes
dont compress = *.gz *.bz2 *.tgz *.zip
auth users = ruser (许可的用户)
secrets file = /etc/rsyncd_users.db(用户账户密码的存放路径)
[root@svr ~]# vim /etc/rsyncd_users.db(创建用户,密码存放文件)
ruser:123456(用户:密码)
root:Taren1
hydra:Anonymous
[root@svr ~]# chmod 600 /etc/rsyncd_users.db(更改存放用户,密码文件权限)

查看共享资源:rsync root@x::

下行同步:rsync [选项] root@x共享名/ 本地目录
上行同步:rsync [选项] 本地目录/ root@x共享名

下行同步实例:
[root@gw1 ~]# rsync -av root@192.168.4.2::hydra/ /myhydra
[root@gw1 ~]# ls /myhydra/(查看文件)
debug kernels
上行同步实例:
[root@gw1 ~]# rsync -av /opt root@192.168.4.2::hydra
[root@svr ~]# ls /usr/src/(查看文件)
debug kernels

——————————————————————————————————————————

关于同步的实时性
依赖于两个组件:
监控源文档的变化(inotify)
调用同步操作的命令行(rsync)语句
关于inotify机制:
linux内核2.6.13以上版本默认支持
需要额外安装控制工具,比如inotify-tools

inotify实时同步(inotifywait监控目录程序)
inotify-tools-3.13.tar.gz
源码包编译安装:
解包:[root@svr ~]# tar xf /root/inotify-tools-3.13.tar.gz -C /usr/src/
配置:[root@svr ~]# cd /usr/src/
[root@svr inotify-tools-3.13]# ./configure
编译:[root@svr inotify-tools-3.13]# make
安装:[root@svr inotify-tools-3.13]# make install
[root@svr ~]# inotifywait
No files specified to watch!

inotifywait监控
基本用法
inotifywait [选项] 目标文件夹
常用命令选项
-m,--monitor:启用监控
-r,--recursive:递归,涵盖所有子目录
-q,--quiet:减少输出信息
-e,--event:限定要监控的事件类型

实例:
监控/opt文件夹
事件类型:modify,move,create,delete,attrib
[root@svr ~]# inotifywait -mrq -e modify,move,create,delete,attrib /opt
[root@svr ~]# [root@svr ~]# vim /root/irsync.sh(写个脚本,放后台执行)
#!/bin/bash
DIR1="/opt"(DIR1是个变量,后期好更改)
RCMD="rsync -az --delete $DIR1 /opt2/"(RCMD变量)
inotifywait -mrq -e create,delete,move,attrib,modify $DIR1 | while read x y z
do
$RCMD(这个变量相当于执行rsync -az --delete /opt /opt2/)
done &

实例:
网站实时镜像
实现主机svr —》主机pc的网站实时镜像
双方的目录均为/var/www/html/
以svr为同步发起方,配置inotfy+rsync同步
以pc为同步目标,基于ssh验证(如果不想输密码,可以给对方公钥)
rsync -az --delete /var/www/html/ root@174.16.16.120:/var/www/html/
[root@svr ~]# vim /root/irsync.sh (要实时同步就修改脚本文件)
#!/bin/bash
DIR1="/var/www/html/"
RCMD="rsync -az --delete $DIR1 root@174.16.16.120:$DIR1
"
inotifywait -mrq -e create,delete,move,attrib,modify $DIR1 | while read x y z
do
$RCMD
done &

————————————————————————————————————————————

linux rsync实时同步的更多相关文章

  1. linux下实现多台服务器同步文件(inotify-tools+rsync实时同步文件安装和配置)

    inotify-tools+rsync实时同步文件安装和配置 注:转载https://www.linuxidc.com/Linux/2012-06/63624.htm

  2. 真正的inotify+rsync实时同步 彻底告别同步慢

    真正的inotify+rsync实时同步 彻底告别同步慢       http://www.ttlsa.com/web/let-infotify-rsync-fast/     背景 我们公司在用in ...

  3. 【转载】inotify+rsync实时同步 解决同步慢问题 (转载备记)

    原文地址:http://www.ttlsa.com/web/let-infotify-rsync-fast/ 背景 我们公司在用inotify+rsync做实时同步,来解决分布式集群文件一致性的问题. ...

  4. lsyncd + rsync 实时同步搭建

    一.inotify和lsync inotify和lsyncd对比一下,发现虽然lsyncd没有inotify那么真正的实时同步,但是lsyncd的同步基本上可以满足基本实时同步的要求,而且lsyncd ...

  5. inotify-tools+rsync实时同步文件安装和配置

    服务器A:论坛的主服务器,运行DZ X2论坛程序;服务器B:论坛从服务器,需要把X2的图片附件和MySQL数据实时从A主服务器实时同步到B服务器.MySQL同步设置会在下一编中说到.以下是用于实时同步 ...

  6. rsync实时同步

    假设有如下需求: 假设两个服务器: 192.168.0.1 源服务器  有目录 /opt/test/ 192.168.0.2 目标服务器  有目录 /opt/bak/test/ 实现的目的就是保持这两 ...

  7. [转载]真正的inotify+rsync实时同步 彻底告别同步慢

    原文链接http://www.ttlsa.com/web/let-infotify-rsync-fast/ 背景我们公司在用inotify+rsync做实时同步,来解决分布式集群文件一致性的问题.但当 ...

  8. inotify+rsync实时同步

    主服务器上安装inotify和rsync,备用服务器上安装rsync 主服务器上修改/etc/rsyncd.conf配置文件 三. 创建密码文件,防火墙设置,客户端和服务器端都要做如下操作 echo ...

  9. linux文件实时同步

    参考博客:https://www.cnblogs.com/MacoLee/p/5633650.html 一.文件同步很简单 服务端:被动的接收传输过来的数据 客户端:主动提供数据给服务端 安装思路:服 ...

随机推荐

  1. IO (一)

    1 IO(Input Output)流概述 IO流用来处理设备之间的数据传输. java对数据的操作是通过流的方式. java用于操作流的对象都在IO包中. 流按操作数据分为两种:字节流和字符流. 流 ...

  2. DDMS和程序打包过程

    1. Android版本对应api级别 2.3~~~~~10 3.0~~~~~11 4.0~~~~~14 4.1.2~~~16 2.3和4.1.2是最稳定的 2.Android手机常见分辨率 320* ...

  3. Django REST framework中的版本控制

    1.REST framework版本控制的流程分析 1.1 determine_version方法的执行流程 首先,请求到达REST framework的CBV,执行CBV中的dispatch方法再次 ...

  4. python中的协程及实现

    1.协程的概念: 协程是一种用户态的轻量级线程.协程拥有自己的寄存器上下文和栈. 协程调度切换时,将寄存器上下文和栈保存到其他地方,在切换回来的时候,恢复先前保存的寄存器上下文和栈. 因此,协程能保留 ...

  5. ABAP更换请求

    当创建的程序或表操作失误存储在其他的请求下边如何更换请求呢? 事务代码:SE09 双击请求号,复制存储错误的对象 打开一个新窗口,双击正确的请求,点击修改,将复制的对象粘贴在正确的请求下 将错误的请求 ...

  6. linux下硬盘uuid查看及修改设置

    查看硬盘UUID 方法一:ls -l /dev/disk/by-uuid方法二:blkid /dev/sdb1 修改硬盘UUID: uuidgen 会返回一个合法的 uuid,结合 tune2fs 可 ...

  7. 《Python网络编程》学习笔记--从例子中收获的计算机网络相关知识

    从之前笔记的四个程序中(http://www.cnblogs.com/take-fetter/p/8278864.html),我们可以看出分别使用了谷歌地理编码API(对URL表示地理信息查询和如何获 ...

  8. 洛谷 [P1314] 聪明的质检员(NOIP2011 D2T2)

    ###一道二分答案加前缀和### 题目中已经暗示的很明显了 "尽可能靠近" " 最小值" 本题的主要坑点在于 long long 的使用 ##abs函数不支持l ...

  9. 51NOD 1376 最长递增子序列的数量 [CDQ分治]

    1376 最长递增子序列的数量 首先可以用线段树优化$DP$做,转移时取$0...a[i]$的最大$f$值 但我要练习$CDQ$ $LIS$是二维偏序问题,偏序关系是$i<j,\ a_i< ...

  10. POJ2318 TOYS[叉积 二分]

    TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14433   Accepted: 6998 Description ...