一、什么是rsync

rsync,remote synchronize是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。rsync是用 “rsync算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。

二、rsync特点

1、能更新整个目录和树和文件系统;
2、有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
3、对于安装来说,无任何特殊权限要求;
4、对于多个文件来说,内部流水线减少文件等待的延时;
5、能用rsh、ssh 或直接端口做为传输入端口;
6、支持匿名rsync 同步文件,是理想的镜像工具;

三、搭建rsync服务器:

备份服务器信息:

server:192.168.1.161

系统环境:CentOS release 6.5 (Final)

内核版本:2.6.32-431.el6.x86_64

客户端信息

rhel:192.168.1.162

系统环境:Red Hat Enterprise Linux Server release 6.5 (Santiago)内核版本:2.6.32-431.el6.x86_64

需要备份的目录:将客户端/backup中的内容备份到备份服务器的/backup中

1、数据同步rsync

2、本地打包脚本实现

3、配置定时任务

备份服务器的配置

# yum -y install rsync

rsync版本:rsync.x86_64 0:3.0.6-12.el6

配置文件

  rsync的主要有以下三个配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息)

  服务器配置文件(/etc/rsyncd.conf),该文件默认不存在,请创建它。

具体步骤如下:

# touch /etc/rsyncd.conf #创建rsyncd.conf,这是rsync服务器的配置文件。
# touch /etc/rsyncd.secrets #创建rsyncd.secrets ,这是用户密码文件。
# chmod 600 /etc/rsyncd.secrets #将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!
# touch /etc/rsyncd.motd

编辑/etc/rsyncd.conf文件

# vim  /etc/rsyncd.conf

pid file = /tmp/rsyncd.pid

port = 873

address = 192.168.1.161

uid = root

gid = root

use chroot = yes

read only = yes

hosts allow=192.168.1.0/24

hosts deny=*

max connections = 5

motd file = /etc/rsyncd.motd

log format = %t %a %m %f %b

syslog facility = local3

log file = /tmp/rsync.log

transger logging = yes

timeout = 300

[mysqldate]

  path = /backup

  list=no

  ignore errors

  auth users = root

  secrets file = /etc/rsyncd.secrets

  comment = zhushi

编辑/etc/ rsyncd.secrets文件

# vim rsyncd.secrets

root:fanjinbao

编辑/etc/rsyncd.motd文件

里面内容想写啥就写啥

启动rsync的服务

# /usr/bin/rsync -–daemon --config=/etc/rsyncd.conf

--daemon参数方式,是让rsync以服务器模式运行

--config用于指定rsyncd.conf的位置,如果在/etc下可以不写

客户端配置:

客户端基本不用配置,直接备份就ok啦

# rsync -azP --delete /backup  root@192.168.1.161:/

常见的选项:

-a,--archive(存档) 归档模式,表示以递归的方式传输文件,并且保持文件属性,等同于加了参数-rlptgoD

-z , --compress 表示压缩传输

-P 显示传输进度

--delete 删除那些目标位置有而原始位置没有的文件

具体选项及参数说明:

rsync有六种不同的工作模式:

1、拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。

2、使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。

3、使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。

4、 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。

5、从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。

6、列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
-a 以archive模式操作、复制目录、符号连接 相当于-rlptgoD

rsync中的参数

-r 是递归;

-l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;

-L 复制软链接文件的原文件

-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;

-z 传输时压缩;

-P 传输进度;

-v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
-e ssh的参数建立起加密的连接。

-u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时

--progress是指显示出详细的进度情况

--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致

--exclude不同步的文件

--password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。

四、使用ssh密钥实现无交互备份。做成脚本,将rhel上的数据,定期备份到server上。

在rhel上生成密钥对

# ssh-keygen

查看生成的公钥和私钥:

[root@rhel backup]# ls /root/.ssh/

id_rsa  id_rsa.pub  known_hosts

将公钥上传到server数据源

# ssh-copy-id root@192.168.1.161

或者

# scp /root/.ssh/id_rsa.pub  root@192.168.1.161:/root/.ssh/authorized_keys

注:如果使用scp命令必须两台机器都可以用scp命令,否则不能使用

五、配置rsync+inotify实现实时同步

inotify概述:

Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题。

安装inotify-tools-3.13.tar.gz

# tar zxvf inotify-tools-3.13.tar.gz

# cd inotify-tools-3.13

./configure --prefix=/usr/local/inotify-tools

# make

# make install

设置inotify-tools的环境变量

# vim .bash_profile

加入imotify的路径/usr/local/inotify-tools/bin

# source .bash_profile

执行监控:

# inotifywait -mrq -e create,move,delete,modify /backup

报错:

error while loading shared libraries: libinotifytools.so.0

解决办法:

# ln -sv /usr/local/inotify-tools/lib/libinotify* /usr/lib/

# ln -s /usr/local/inotify-tools/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

# cp /usr/lib/libinotifytools.so.0 /usr/local/lib

然后在执行监控

# inotifywait -mrq -e create,move,delete,modify /backup

就可以了

同步脚本:

# vim backup.sh

#!/bin/bash

inotifywait -mrq -e create,move,delete,modify /backup  | while read a b c

do

rsync -azP --delete /backup root@192.168.1.161:/

done

# chmod 755 backup.sh

./backup.sh &

六、利用服务方式同步数据

编辑服务端的配置文件

# vim /etc/rsyncd.conf不用怀疑就用这个命令,没有就增加

添加如下内容:

port=8730

log file=/var/log/rsync.log

pid file=/var/run/rsync.pid

[fanjinbao]

path=/backup

use chroot=true

max connection=4

read only=yes

list=yes

uid=root

gid=root

auth users=root

secrets file=/etc/rs.passwd

hosts allow=192.168.1.162

注意:修改文件后不需要重启服务

创建密码文件:

# vim /etc/rs.passwd

# chmod 400 /etc/rs.passwd

启动服务:

# rsync --daemon

去客户端测试:

# rsync -avzP --port 8730 test@192.168.1.161::test/ .

在客户端指定密码文件,无交互同步数据

# vim /etc/rsync_passwd编辑密码文件

# chmod 400 /etc/rsync_passwd设置为只读

# rsync -avzP --port 8730 --password-file=/etc/rsync_passwd test@192.168.1.161::test/ .

rsync+inotify实现服务器数据同步的更多相关文章

  1. Mysql 主从服务器数据同步

    安装2台windows Server 服务器,分别安装Mysql,配置环境变量,完成安装确认在CMD窗口可以使用Mysql命令 在Master服务器上创建同步账号,确保Slave服务器能访问Maste ...

  2. rsync+inotify 实现服务器之间目录文件实时同步(转)

    软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文 ...

  3. linux系统中rsync+inotify实现服务器之间文件实时同步

    最近需要对服务器上的文件实施动态备份,我又不想每次都手动来进行备份,在网上找了挺多资料,发现使用rsync就可以实现,如果想要实现实时同步,还可以使用rsync+inotify组合,本文就是以组合方式 ...

  4. rsync+inotify实现服务器之间文件实时同步--转

    之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道 ...

  5. centos6.5 rsync+inotify实现服务器之间文件实时同步

    1. rsync的优点与不足 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据 ...

  6. linux下rsync+inotify实现服务器之间文件实时同步

    先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例 ...

  7. Inotify+Rsync实现Linux服务器文件同步

    做这个功能的时候遇到了好多坑,在此感谢一下这篇博客 http://kerry.blog.51cto.com/172631/734087/  ,大家参照这篇博客就能实现该功能. 另外如果想详细了解一下的 ...

  8. rsync+inotify实现远程数据备份

    一.rsync的基本介绍 1.  什么是rsync Rsync是一款开源的.快速的.多功能的.可以实现增量的本地货远程数据镜像同步备份的优秀工具,Rsync使用与unix,linux,windows等 ...

  9. CentOS7 Rsync服务搭建-Rsync+Inotify架构实现实时同步

    一.rsync 概念 1.rsyncrsync是类unix/linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同 ...

随机推荐

  1. Section 1.4 Packing Rectangles

    本来是USACO Training的1.4.1的,但是介于今早过了食物链想起了这道题实在是太怨念了,翻出自己写的AC程序居然有5KB!! 思路很简单,枚举,而且就图中的六种情况.但是第六种变化状况太多 ...

  2. redis2.8--c/s架构流程

  3. JS图片加载失败显示默认图片

    代码如下: <div id='photo<%# Container.DataItemIndex+1%>' style="position: absolute; displa ...

  4. 使用icon替换你的网页图标(转)

    第一次使用 Font Awesome 发现相当的爽呀!它的图标很全,能够帮你节约时间去找图片.下面就来一起学习吧: 1: 去官方网站下载解压 http://fontawesome.io/ 2: 解压后 ...

  5. C# Delete Url Cookie

    public static void DeleteCookieFile(Uri url) { string path = Environment.GetFolderPath(Environment.S ...

  6. python几大排序算法

    1.插入排序 原理:有数列[k1,k2,k3...],假设k1是排好序的,插入k2,排序完成,然后再插入k3,以此类推 def insert_sort(arr): for i in range(1,l ...

  7. PAT 10-1 在字符串中查找指定字符

    百度了一下另外两位同学的做法,都是先判断是否匹配,然后再用一个for()循环输出,我当然也是先判断,然后,就直接puts(),还是巧妙一点,题设要求及代码实现如下 /* Name: Copyright ...

  8. Ubuntu 14.10 下网络流量实时监控ifstat iftop命令详解

    ifstat 介绍 ifstat工具是个网络接口监测工具,比较简单看网络流量 实例 默认使用 #ifstat eth0 eth1 KB/s in KB/s out KB/s in KB/s out 0 ...

  9. Note_Master-Detail Application(iOS template)_02_YJYAppDelegate.m

    //YJYAppDelegate.m #import "YJYAppDelegate.h" #import "YJYMasterViewController.h" ...

  10. iOS之《 Human Interface Guidelines:from Concept to Product 》<界面设计指南 二>:从概念到产品的实现

    开发之前需要想到的: 1.列出所有用户可能喜欢的功能. 例子:食谱 (1)创建一个总的食谱菜单 (2)食谱的获取方法  (3)比较价格 (4)当地的食材店 (5)食谱每道菜的注释 (6)能够获取和使用 ...