一、rsync简介

(1)rsync是什么?

  • rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。

(2)rsync作用比较

  • 远程拷贝:有点类似ssh的scp命令
  • 本地拷贝:cp
  • 删除:rm
  • rsync可以是一个网络服务(port,socket)

(3)rsync工作原理

在同步备份数据时,rsync通过其独特的“quick cheek”算法,仅同步大小或者修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。

(4)rsync特性:

  • 支持拷贝特殊文件如链接文件,设备等。
  • 可以排除指定文件或目录同步的功能,相当于打包命令tar的排除功能
  • 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变
  • 可实现增量同步,即只同步发生变化的数据,因此数据传输效率很高
  • 可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)

二、rsync在企业工作场景

  • 两台服务器之间数据同步cron+rsync,不是实时同步
  • rsync结合inotify的功能做实时的数据同步rsync+inotify或sersync

第一种工作模式:

rsync客户端命令:

rsync -avz /etc/hosts /tmp/等价于 cp -a /etc/hosts/tmp/

-a 保持文件原来的属性

rsync -avz --delete /null/ /tmp/等价于rm

第二种工作模式:

push:rsync -avzP -e 'ssh -p 21987' /etc/passwd hongpeng01@10.69.112.134:/tmp/

pull:rsync -avzP -e 'ssh -p 21987' hongpeng01@10.69.112.134:/tmp/ /tmp/

第三种工作模式:

需要存放备份文件的机器(10.69.112.77)

1、配置文件

vim/etc/rsyncd.conf

#工作中指定用户(需要指定用户)
uid = rsync
gid = rsync
#相当于黑洞.出错定位
use chroot = no
#有多少个客户端同时传文件
max connections = 200
#超时时间
timeout = 300
#进程号文件
pid file = /var/run/rsyncd.pid
#日志文件
lock file = /var/run/rsync.lock
#日志文件
log file = /var/log/rsyncd.log
#模块开始
#这个模块对应的是推送目录
#模块名称随便起
[backup]
#需要同步的目录
path = /backup/
#表示出现错误忽略错误
ignore errors
#表示网络权限可写(本地控制真正可写)
read only = false
#这里设置IP或让不让同步
list = false
#指定允许的网段
hosts allow = 10.69.112.0/24
#拒绝链接的地址,一下表示没有拒绝的链接。
hosts deny = 0.0.0.0/32
#不要动的东西(默认情况)
#虚拟用户
auth users = rsync_backup
#虚拟用户的密码文件
secrets file = /etc/rsync.password

2、创建rsync用户,及共享目录/backup

useradd rsync -s /sbin/nologin

mkdir /backup

chown -R rsync /backup

3、创建用户密码

echo "rsync_backup:hongpeng" > /etc/rsync.password

chmod 600 /etc/rsync.password

4、启动

rsync --daemon

netstat -tunlp | grep rsync

5、加入开机自启动

echo "rsync --daemon" >>/etc/rc.local

修改完配置文件

pkill rsync

rsync --daemon

需要推送备份文件的机器(10.69.112.133)

1.echo "hongpeng" > /etc/rsync.password #推送备份文件只需密码,不需用户

chmod 600 /etc/rsync.password

2.rsync -avz /data/text.txt rsync_backup@10.69.112.77::backup --password-file=/etc/rsync.password

三、rsync优缺点:

优:

  • 增量备份同步 支持socket 集中备份

缺:

  • 大量小文件备份时,时间比较长,有时进程停止。解决:打包同步 drbd(文件系统同步复制block)
  • 同步大文件,10G文件有时有问题,中断。未完成同步前,是隐藏文件。

四、生产环境cron+rsync实现svn配置文件同步

10.69.213.12备份服务器

[SVN_repos]
uid = root
gid = root
path = /home/svn
read only = no
hosts allow = 10.69.213.11

10.69.213.11主服务器

cron执行脚本

#!/bin/bash
time1=`date +%s`
time /usr/bin/rsync -avzP --delete --progress /home/svn/SVN_repos root@10.69.213.12::SVN_repos
time2=`date +%s` echo $time1
echo $time2 a=`echo ${time2}-${time1}|bc`
b=`expr ${a} % `
c=`echo ${a}/|bc`
backup_Ymd=`date +%Y-%m-%d-%H`
echo "${c}m ${b}s" d=`echo "${c}m-${b}s"`
echo ${d} > /var/log/svn/${backup_Ymd}-$d.txt

五、inotify+rsync实现文件实时备份

需要备份的机器10.69.112.133

vim backup.sh

#!/bin/bash
inotify=/usr/local/inotify/bin/inotifywait
$inotify -mrq --format '%w%f' -e create,close_write,delete /data | while read file
do
cd / && rsync -az ./data --delete rsync_backup@10.69.112.77::backup/ --password-file=/etc/rsync.password
done

for i in `seq 100`;do touch stu$i;done#在需要备份的目录下创建100个文件

/bin/bash /usr/local/scripts/backup.sh &#后台执行

加入rc.local开机自启

存储备份的机器10.69.112.77

在/data/data目录下能看到133上创建的100个文件

/proc/sys/fs/inotify目录下有三个文件,对inotify机制有一定的限制

  • max_user_watches:设置inotifywait或inotifywatch命令可以监控的文件数量
  • max_user_instances:设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
  • max_queued_events:设置inotify实例事件队列可容纳的事件数量

优化

echo “50000000” > /proc/sys/fs/inotify/max_user_watches

echo “50000000” > /proc/sys/fs/inotify/max_queued_events

sersync功能:

  • 配置文件
  • 真正的守护进程socket
  • 可以对失败文件定时重传
  • 第三方的HTTP接口
  • 默认多线程同步

10.69.112.78(推送端)sersync

一.下载sersync源码包

wget http://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz

二.创建sersync目录结构

# mkdir /usr/local/sersync

# mkdir /usr/local/sersync/conf

# mkdir /usr/local/sersync/bin

# mkdir /usr/local/sersync/log

# tar zxvf sersync2.5_32bit_binary_stable_final.tar.gz

# cd GNU-Linux-x86/

# cp confxml.xml /usr/local/sersync/conf

# cp sersync2 /usr/local/sersync/bin

三.配置sersync

1.首先创建连接rsyncd的密码文件

# echo "hongpeng" >/etc/rsync.password

# chmod 600 /etc/rsync.password

2.配置confxml.xml

# cd /usr/local/sersync/conf

# vim confxml.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host>
<debug start="false"/>
<fileSystem xfs="false"/>
<filter start="false">
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="false"/>
<modify start="false"/>
</inotify> <sersync>
<localpath watch="/data/">
<remote ip="10.69.112.77" name="backup"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>

<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync> <plugin name="command">
<param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
<filter start="false">
<include expression="(.*)\.php"/>
<include expression="(.*)\.sh"/>
</filter>
</plugin> <plugin name="socket">
<localpath watch="/opt/tongbu">
<deshost ip="192.168.138.20" port="8009"/>
</localpath>
</plugin>
<plugin name="refreshCDN">
<localpath watch="/data0/htdocs/cms.xoyo.com/site/">
<cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
<sendurl base="http://pic.xoyo.com/cms"/>
<regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
</localpath>
</plugin>
</head>

3.创建推送端sersync同步目录

# mkdir /data

4.设置环境变量:

# echo "export PATH=$PATH:/usr/local/sersync/bin/" >> /etc/profile

# source /etc/profile

5.启动sersync

# sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml

注:重启操作如下:

# killall sersync2 && sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml

6.设置开机启动

# echo "sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml" >> /etc/rc.local

这里面有个坑,备份服务器(10.69.112.77)上/data目录的属主属组一定得和/etc/rsyncd.conf里面的uid、gid一样,否则不能同步。

http://liubao0312.blog.51cto.com/2213529/1677586

rsync数据同步备份的更多相关文章

  1. 搭建中小规模集群之rsync数据同步备份

    NFS重要问题 1.有关NFS客户端普通用户写NFS的问题. 1)为什么要普通用户写NFS. 2)exports加all_squash. Rsync介绍 什么是Rsync? Rsync是一款开源的.快 ...

  2. Linux实战教学笔记21:Rsync数据同步工具

    第二十一节 Rsync数据同步工具 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载 ...

  3. Rsync数据同步工具

                                        Rsync数据同步工具 什么是Rsync? Rsync是一款开源的.快速的.多功能的,可以实现全量及增量的本地或原程数据同步备份 ...

  4. Rsync数据同步服务

    Rsync数据同步服务 Rsync软件适用与unix/linux/windows等多种操作系统平台 Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具,可以实 ...

  5. rsync 数据同步

    什么是Rsync? Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地货远程数据同步备份的优秀工具.适用于unix/linux/windows等多种操作系统平台. Rsync具有可使本地 ...

  6. Linux之rsync数据同步服务

    rsync是一个开源.快速的.多动能的.可以实现全量,增量的本地或远程数据同步备份工具,它适用于多种操作系统平台. 1.rsync的特性(功能) (1)支持拷贝特殊文件(如链接文件.设备文件) (2) ...

  7. rsync数据同步工具的配置

    rsync数据同步工具的配置 1. rsync介绍 1.1.什么是rsync rsync是一款开源的快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于 unix ...

  8. 【集群实战】Rsync数据同步工具

    1. Rsync介绍 1.1 什么是Rsync? Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows ...

  9. 【基础】:Rsync数据同步工具

    第二十一节 Rsync数据同步工具 1.1 Rsync介绍 1.1.1 什么是Rsync? 1.1.2 Rsync简介 1.3 Rsync的特性 1.1.4 Rsync的企业工作场景说明 1.2 Rs ...

随机推荐

  1. PacificA中的租约与失效检测解读

    PacificA是微软的在基于log的分布式存储系统中的复制技术. 由于配置管理器维护着当前配置的真实情况,因此主节点不必保持不变. 这是因为配置的本地视图在不同服务器上是不必同步的. 特别是,我们必 ...

  2. SQL Server 关于列的权限控制

    在SQL SERVER中列权限(Column Permissions)其实真没有什么好说的,但是好多人对这个都不甚了解,已经被人问了几次了,所以还是在这里介绍一下,很多人都会问,我能否单独对表的某列授 ...

  3. PowerShell中的基础数据类型

    PowerShell是一个面向对象的语言,在申明变量的时候不强制要求申明数据类型,使用$开头来申明变量即可. 基本数据类型 PowerShell本身是基于.Net开发出来的,所以在.Net中的基本数据 ...

  4. (转)tomcat进程意外退出的问题分析

    节前某个部门的测试环境反馈tomcat会意外退出,我们到实际环境排查后发现不是jvm crash,日志里有进程销毁的记录,从pause到destory的整个过程: org.apache.coyote. ...

  5. DIV+CSS规范命名大全

    网页制作中规范使用DIV+CSS命名规则,可以改善优化功效特别是团队合作时候可以提供合作制作效率,具体DIV CSS命名规则CSS命名大全内容篇. 常用DIV+CSS命名大全集合,即CSS命名规则 D ...

  6. java int与integer的区别

    int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型 ...

  7. vb上位机模拟电压监测系统

    vb作为一种古老的语言,在工作中已经用不到了,但这门语言也是我在校期间研究比较多的一种,基本的通讯,数据库,界面等模块已经比较了解,马上要进单位实习了,研究的是电机的变频器,软件这块,希望在以后的工作 ...

  8. 重构与模式(Refactoring to Patterns)-读书笔记

    第一章 ☛过度设计:是指代码的灵活性和复杂性超出所需. 第二章 ☛重构是一种保持行为的转换. 第三章 ☛每一个模式都是由三部分组成的规则,他表达的是某一环境,一个问题以及解决问题的方案之间的关系. ☛ ...

  9. 第3章 窗口与消息_3.1Windows编程模型

    第3章窗口与消息 3.1 Windows_编程模型 (1)窗口程序的运行过程   ①设计窗口   ②注册窗口类(RegisterClassEx).在注册之前,要先填写RegisterClassEx的参 ...

  10. Mysql数据库主从心得整理

    管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本的主从,本博文属于总结性的,有一部分是摘自网络,大部分是根据自己管理的心得和经验所写,整理了一下,分享给各位同行,希望对 ...