Rsync 是 Unix/Linux 下的一款应用软

在平常的运维中进常要对一些数据进行备份,以防止意外的服务器故障导致不可避免的后果,tar,cp只能适应一些小范围backup,对于几T甚至几P的数据却毫无用处了

rsync可以做到这一点:

它的特性如下:

可以镜像保存整个目录树和文件系统。

可以很容易做到保持原来文件的权限、时间、软硬链接等等。

无须特殊权限即可安装。

快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

支持匿名传输,以方便进行网站镜象。

件,利用它可以使多台服务器数据保持同步一致性,

Rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。可
以很容易做到保持原来文件的权限、时间、软硬链接等。

下面正式来配置 Rsync 服务器,模拟真实环境服务器数据同步:
A 是源服务器,B、C 为客户端服务器,因需求,B、C 服务器需要从 A 某个同步某个目
录到本地。
正式安装,官网下载 rsync 稳定版本,然后进行安装编译。
cd /usr/src ;wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
tar xzf rsync-3.0.7.tar.gz && cd rsync-3.0.7 && ./configure --
prefix=/usr/local/rsync &&make &&make install
安装完毕,配置 rsync 配置文件,默认/etc/不存在 rsyncd.conf 配置文件,需要手动
创建,配置内容为如下:cat rsyncd.conf
#########[global] 全局配置
uid = nobody
gid = nobody
use chroot = no
max connections = 30
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[www]
read only = yes
path = /usr/local/webapps
comment = www
auth users =test
secrets file = /etc/rsync.pas
hosts allow = 192.168.0.11,192.168.0.12
[web]
read only = yes
path = /data/www/web
comment = web
auth users =test
secrets file = /etc/rsync.pas
hosts allow = 192.168.1.11,192.168.0.0/24
Rsync 配置参数说明:
[www] #要同步的模块名
path = /usr/local/webapps #要同步的目录
comment = www #这个名名称无所谓,最后模块名一直)
read only = no # no 客户端可上传文件,yes 只读
write only = no # no 客户端可下载文件,yes 不能下载
list = yes #是否提供资源列表
auth users =test #登陆系统使用的用户名,没有默认为匿名。
hosts allow = 192.168.0.10,192.168.0.20 #本模块允许通过的 IP 地址
hosts deny = 192.168.1.4 #禁止主机 IP
secrets file=/etc/rsync.pas #密码文件存放的位置
启动服务器端 RSYNC 主进程,/usr/local/rsync/bin/rsync --daemon ,监听端口 TCP
873
设置 rsync 服务器端同步密钥:
vi /etc/rsync.pas
username:userpasswd (表示用户名:密码)
test:test999
保存完毕,chmod 600 /etc/rsync.pas 设置权限为宿主用户读写。
最后在客户端配置同步密钥和命令,如下设置即可同步。
vi /etc/rsync.pas 输入服务器端配置的密码:
test999
保存即可开始同步:执行如下语句
Rsync -aP --delete test@192.168.0.100::www /usr/local/webapps
--password-file=/etc/rsync.pas
Rsync -aP --delete test@192.168.0.100::web /data/www/web
--password-file=/etc/rsync.pas
注*/usr/local/webapps 为客户端的目录,@前 test 是认证的用户名;IP 后面 www 为
rsync 服务器端的模块名称。
Rsync 常用参数解析:
-a, ––archive 归档模式,表示以递归方式传输文件,并保持所有文件属性。
––exclude=PATTERN 指定排除一个不需要传输的文件匹配模式
––exclude-from=FILE 从 FILE 中读取排除规则
––include=PATTERN 指定需要传输的文件匹配模式
––delete 删除那些接收端还有而发送端已经不存在的文件
-P 等价于 ––partial ––progress
-v, ––verbose 详细输出模式
-q, ––quiet 精简输出模式
––rsyncpath=PROGRAM 指定远程服务器上的 rsync 命令所在路径
––password-file=FILE
从 FILE 中读取口令,以避免在终端上输入口令,
通常在 cron 中连接 rsync 服务器时使用
. 5.2. 2 2 c Rsync 基于 H SSH 同步
除了可以使用 rsync 密钥进行同步之外,还有一个比较简单的同步方法就是基于 linux
ssh 来同步。具体方法如下:
rsync -aP --delete root@192.168.0.10:/data/www/webapps
/data/www/webapps ,如果想每次同步不输入密码,需要做 Linux 主机之间免密码登录。
. 5.2. 3 3 c Rsync 实时同步配置
在企业日常 web 应用中,某些特殊的数据需要要求保持跟服务器端实时同步,那我们该
如何来配置呢?如何来实现呢?这里可以采用 rsync+inotify 来实现需求。
Inotify 是一个 Linux 特性,它监控文件系统操作,比如读取、写入和创建。
Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。
Rsync 安装完毕后,需要安装 inotify 文件检查软件。同时为了同步的时候不需要输入
密码,这样可以使用 ssh 免密钥方式进行同步。
安 装 inotify-tools-3.14.tar.gz 软 件 , tar – xzf
inotify-tools-3.14.tar.gz ;./configure ;make
;make install 即可。配置 auto_inotify.sh 同步脚本,内容如下:
#!/bin/sh
src=/data/webapps/www
des=/home/webapps/
ip=192.168.0.11
inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e
modify,delete,create,attrib ${src} | while read file
do
for i in $ip
do
/usr/local/rsync/bin/rsync -aP --delete $src root@$ip:$des
done
done
在服务器端后台启动该脚本,nohup sh auto_inotify.sh & ,在服务器端目录新建
或者删除,客户端都会实时进行相关操作。

rsync同步备份搭建的更多相关文章

  1. wordpress利用rsync同步备份

    我搭建的wordpress服务器现在使用的系统是opensuse, 服务器上面已做脚本和计划任务将wordpress使用的数据库与web目录每天压缩备份放到 /data/backup目录下 opera ...

  2. rsync同步备份

    一.服务器端.备份客户端安装 rsync 服务. 1.环境: CentOS 主 IP:172.16.3.18 备 IP:172.16.3.19 2.安装 rsync 软件 #yum install r ...

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

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

  4. 如何通过rsync+sersync 实现同步备份

    3.rsync+sersync更快更节约资源实现web数据同步4.unison+inotify实现web数据双向同步 一:为什么要实现同步备份 服务器上有些重要文件或数据时,可以把他们多备份一份到其他 ...

  5. Rsync + sersync 实时同步备份

    一      Rsync + Sersync  实时同步介绍 1.Rsync 服务搭建介绍 云机上搭建Rsync server,在本地搭建Rsync Clinet. 2. Sersync 服务搭建介绍 ...

  6. 同步备份工具之 rsync

    1.常用同步方法 SCP. NFS. SFTP. http. samba. rsync. drbd(基于文件系统同步,效率高) 2.rsync 介绍 rsync,英文全称是 remote synchr ...

  7. rsync实时备份备份服务搭建和使用指南

    一.Rsync企业工作场景说明: 1.利用定时任务+rsync方式实现数据同步 对于网站内部技术人员创建的数据,可以采取定时任务的方式 2.利用实时任务+rsync方式实现数据同步 对于网站外部访问用 ...

  8. rsync数据同步备份

    一.rsync简介 (1)rsync是什么? rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具. (2)rsync作用比较 远程拷贝:有点类似ssh的scp ...

  9. CentOS 6.5 rsync+inotify实现数据实时同步备份

    CentOS 6.5 rsync+inotify实现数据实时同步备份 rsync    remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘 ...

随机推荐

  1. HDU 4357——String change——————【规律题】

    String change Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  2. Win10 手工安装.netframework3.5

    1.装载win10/win8...等镜像文件 2.cmd命令管理员身份运行 3.输入命令:C:\Windows\system32>dism.exe /online /enable-feature ...

  3. XHML教会我的一些东西-5

    这是写好之后的主页代码. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  4. 【起航计划 024】2015 起航计划 Android APIDemo的魔鬼步伐 23 App->Notification->IncomingMessage 状态栏通知

    应用程序可以使用Notifications来通知用户某个事件发生了(如收到短信).类NotificationManager 用来处理Notification, NotificationManager可 ...

  5. c#数据类型和表达式

    一.数据类型 值类型: 1.整数(没有小数) Byte:字节0~255 Char:一个字符 Int 2.有小数 范围大的:double双 小范围:float单 最精确的:十进制decimal 3.bo ...

  6. Chromium源码系列一:Chromium简介及源代码获取和编译

    Chromium源码系列一:Chromium简介及源代码获取和编译 Chromium简介 ​ Chromium是一个由Google主导开发的网页浏览器,以BSD许可证等多重自由版权发行并开放源代码.C ...

  7. VUE的组件DEMO

    组件的基本写法可以如下: HTML: <div id="components-demo"> <button-counter self-data="thi ...

  8. POJ-1840 Eqs---二分

    题目链接: https://vjudge.net/problem/POJ-1840 题目大意: 给出一个5元3次方程,输入其5个系数,求它的解的个数 其中系数 ai∈[-50,50]  自变量xi∈[ ...

  9. HDU(1166),线段树模板,单点更新,区间总和

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 第一次做线段树,帆哥的一句话,我记下来了,其实,线段树就是一种处理数据查询和更新的手段. 然后, ...

  10. python 合并字符串

    [root@chenbj python]# cat name.py #!/usr/bin/env python # _*_ coding:utf-8 _*_ first_name = "ch ...