部署Rsync服务器-差异化数据同步
目录:
1.搭建Rsync服务器
2.客户端访问
3.同步备份数据脚本
Rsync(remote sync)是Unix及类Unix平台下一款神奇的数据镜像备份软件,她不像FTP或其他文件传输服务那样需要进行全备份,Rsync可以根据数据的变化进行差异备份,从而减少数据流量、提供工作效率。你可以使用她进行本地数据或远程数据的拷贝,Rsync可以使用SSH安全隧道进行加密数据传输。Rsync服务端定义源数据,Rsync客户端仅在源数据发生改变后才会从服务器上实际拷贝数据至本地,如果源数据被删除则客户端数据也会被删除以确保主机之间的数据是同步的。Rsync使用TCP 873端口。
1.搭建Rsync服务器
部署Rsync服务器需要创建一个配置文件,默认该文件不存在,然后使用守护进程模式启动rsync程序即可,下面我们将以图1-1为原型创建配置文件将/common发布给所有的客户端程序。因为Rsync是Andrew Tridgell (Samba的作者)与Paul Mackerras 合作开发的软件,所以Rsync配置文件与Samba比较相似。Rsync分为三个配置文件分别是:rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(服务器信息文件)。
图1-1
- [root@centos6 ~]# yum -y install rsync
- [root@centos6 ~]# mkdir /common; cp /etc/init.d/* /common/
- [root@centos6 ~]# vim /etc/rsync.conf
- #/etc/rsyncd.conf
- #设置服务器信息提示文件名称,在该文件中编写提示信息。
- motd file = /etc/rsyncd.motd
- #开启Rsync数据传输日志功能。
- transfer logging = yes
- #设置日志文件名称,可以通过log format参数设置日志格式。
- log file = /var/log/rsyncd.log
- #设置Rsync进程号保存文件名称。
- pid file = /var/run/rsyncd.pid
- #设置锁文件名称。
- lock file = /var/run/rsync.lock
- #设置服务器监听的端口号,默认为873。
- port = 873
- #设置服务器所监听网卡接口的IP地址,这里服务器IP地址为192.168.0.254。
- address = 192.168.0.254
- #设置进行数据传输时所使用的账户名称或ID号,默认使用nobody。
- uid = nobody
- #设置进行数据传输时所使用的组名称或GID号,默认使用nobody。
- gid = nobody
- #设置user chroot为yes后,rsync会首先进行chroot将根映射到path参数路径下,对客户
- #端而言系统的根就是path参数所指定的路径。但这样做需要root权限,并且在同步符号
- #连接资料时仅会同步名称,而内容将不会同步。
- use chroot = no
- #是否允许客户端上传数据,这里设置为只读。
- read only = yes
- #设置并发连接数,0代表无限制。超出并发数后,如果依然有客户端连接请求,则将会收
- #到稍后重试的提示消息。
- max connections = 10
- #模块,Rsync通过模块定义同步的目录,模块以[name]的形式定义,这个跟Samba定义共
- #享目录是一样的效果。在Rsync中也可以定义多个模块。
- [common]
- #comment定义注释说明字串。
- comment = Web content
- #同步目录的真实路径通过path指定。
- path = /common
- #忽略一些IO错误
- ignore errors
- #exclude可以指定例外的目录,即将common目录下的某个目录设置为不同步数据。
- #exclude = test/
- #设置允许连接服务器的账户,账户可以是系统中不存在的用户。
- auth users = tom,jerry
- #设置密码验证文件名称,注意该文件的权限要求为600,仅在设置auth users参数后有效。
- secrets file = /etc/rsyncd.secrets
- #设置允许哪些主机可以同步数据,可以是单个IP也可以是网段,多个IP与网段之间使用空
- #格分割。
- hosts allow=192.168.0.0/255.255.255.0
- #设置拒绝所有(除hosts allow定义的主机外)。
- hosts deny=*
- #客户端请求显示模块列表是本模块名称是否显示。
- list = false
- [root@centos6 ~]# echo "tom:pass" > /etc/rsyncd.secrets
- [root@centos6 ~]# echo "jerry:111" >> /etc/rsyncd.secrets
- [root@centos6 ~]# chmod 600 /etc/rsyncd.secrets
- [root@centos6 ~]# echo “welcome to access” >/etc/rsyncd.motd
- [root@centos6 ~]# rsync --daemon
- [root@centos6 ~]# echo “rsync --daemon” >> /etc/rc.local
- [root@centos6 ~]# iptables -I INPUT -p tcp --dport 873 -j ACCEPT
由于Rsync默认并不是开机启动项,如果需要设置Rsync为开机启动服务可以将rsync –daemon命令写入/etc/rc.local文件实现开启启动。
2.客户端同步数据
现在让我们开始同步数据吧,在客户端主机同样使用rsync命令就可以进行初始化数据传输,使用同样的程序但不需要--daemon选项。
- [root@centos6 ~]# yum -y install rsync
- [root@centos6 ~]# rsync -vzrtopg --progress tom@192.168.0.254::common /test
rsync命令
描述:一个快速、多功能的远程(或本地)数据拷贝工具
用法:下表较全面地介绍了rsync的语法格式,SRC表示源路径,DEST表示目标路径
本地拷贝 |
|
rsync [选项] SRC… [DEST] |
|
通过远程shell拷贝 |
|
下载数据 |
rsync [选项] [USER@]HOST:SRC... [DEST] |
上传数据 |
rsync [选项] SRC… [USER@]HOST:DEST |
通过rsync进程拷贝 |
|
下载数据 |
rsync [选项] [USER@]HOST::SRC... [DEST] |
上传数据 |
rsync [选项] SRC… [USER@]HOST::DEST |
选项: -v,--verbose 显示详细信息
-q,--quiet 静默模式,无错误信息
-a,--archive 归档模式,主要保留文件属性,等同于-rlptgoD
-r,--recursive 递归
-b,--backup 如果目标路径已经存在同名文件时,将老的文件重命名为
~filename,可以使用--suffix指定不同的备份前缀
--back-dir 将备份文件保存至指定目录
--suffix 指定备份文件前缀
-u,--update 如果目标地址中的文件比将要下载的文件更新则不执行同
步,也就是说不会用旧的文件覆盖新的文件
-l,--links 保留符号连接
-p,--perms 保留文件权限属性
-H,--hard-links 保留硬连接
-p,--perms 保留权限
-A,--acls 保留ACL权限
-X,--xattrs 保留文件附件属性
-o,--owner 保留文件所有者属性
-g,--group 保留文件所属组属性
--devices 保留设备文件
--specials 保留特殊文件
-D 等同于--devices --specials
-t 保留修改时间属性
-W,--whole-file 不做增量检查,直接拷贝全部文件
-e,--rsh=COMMAND 指定远程shell
--existing 仅同步目标路径中已经有的文件,不下载源路径下新的文件
--delete 删除那些仅在目标路径中存在的文件(源路径中不存在)
-z,--compress 传输过程中对数据进行压缩
--include=PATTERN 匹配不排除的文件
--exclude=PATTERN 匹配需要排除的文件
--progress 显示数据传输的进度信息
--partial 保留因故障没有传输完成的文件
-P 等同于--progress --partial
--password-file=FILE 指定密码文件,将密码写入文件,实现非交互式数据同步
--list-only 仅列出服务器模块列表,需要rsync服务器设置list = true
实例:
- [root@centos6 ~]# rsync -t *.c foo:src/
- 将本机当前目录下的.c结尾的文件拷贝至foo主机的src目录下。
- [root@centos6 ~]# rsync -avz foo:src/bar /data/tmp
- 从foo主机上以递归方式将src/bar目录拷贝至本机/data/tmp目录。
- [root@centos6 ~]# rsync -avz foo:src/bar/ /data/tmp
- 从foo主机上以递归方式将src/bar目录下的所有内容拷贝至本机/data/tmp目录,但在/data/tmp目录下不会创建bar目录。
- [root@centos6 ~]# rsync -avz /src/foo /dest
- 将本机/src/foo目录拷贝至/dest目录。
- [root@centos6 ~]# rsync -avz tom@192.168.0.254::common /test3
- 使用tom账户连接远程192.168.0.254主机的rsync进程,将common模块定义的path路径下载至本地test3目录。
- [root@centos6 ~]# rsync -avz 192.168.0.254::common /dest
- 匿名下载192.168.0.254服务器的common模块至本地/dest目录。
- [root@centos6 ~]# rsync --list-only tom@192.168.0.254::
- 显示192.168.0.254服务器所有的模块名称,需要服务端配置list = true才会显示。
- [root@centos6 ~]# echo “pass” > rsync.pass
- [root@centos6 ~]# rsync -avz --delete --password-file=rsync.pass 192.168.0.254::common /dest
创建密码文件,使用密码文件进行非交互式数据同步。
如果客户端需要定期对Rsync服务器的数据进行备份,可以编写Shell脚本,通过计划任务实现数据的定期备份工作。下面的脚本为精简版数据备份脚本范例:
- [root@centos6 ~]# cat rsync_bak.sh
- #!/bin/bash
- #This script does backup through rsync.
- #Date:2012-10-1
- #Version:1.0 beta
- #
- export PATH=/bin:/usr/bin:/usr/local/bin
- SRC=common
- DEST=/data
- Server=192.168.0.254
- User=tom
- #password file must not be other-accessible.
- Passfile=/root/rsync.pass
- #If the DEST directory not found, then create one.
- [ ! -d $DEST ] && mkdir $DEST
- [ ! -e $Passfile ] && exit 2
- rsync -az --delete --password-file=$Passfile ${User}@${Server}::$SRC $DEST/$(date +%Y%m%d)
http://manual.blog.51cto.com/3300438/1172372 丁丁历险博客
本文转自丁丁历险51CTO博客,原文链接: http://blog.51cto.com/manual/1172372,如需转载请自行联系原作者
部署Rsync服务器-差异化数据同步相关推荐
- DC域控服务器与辅助DC域控服务器之间的数据同步以及创建域组织机构和域用户
本篇主要是处理DC域控服务器与辅助DC域控服务器之间的数据同步关系,DC域控服务器与辅助DC域控服务器的创建可以参考上篇文章 验证DC域控服务器与辅助DC域控服务器之间的数据同步关系,分别在辅助DC域 ...
- 利用nginx集群式部署服务器中,数据同步问题
最近在项目中遇到了一个数据同步的问题 项目部署背景:利用nginx集群式服务器部署,使用唯一的一台数据库服务器,数据库为mysql 问题描述:对一个账户进行更新操作,一个未查明的原因,用户点击更新操作 ...
- mysql两台服务器怎么做数据同步_两台mysql服务器实现双机互备配置并测试数据同步...
对于实现两台机子的互备配置,本文作出了详细的介绍,之后的测试数据同步,在10.168.1.44服务器数据库里修改一条数据, 可以看到数据已经同步过来了.反过来,修改10.168.0.126的数据,也可 ...
- SQL Server: 不同服务器之间的数据同步
例子:将服务器101的数据库A的数据同步到服务器201中的数据库B. 源库:服务器101,数据库A 目标库:服务器201,数据库B 步骤: 1. 选择要导入的数据库: 2. 选择源数据库,即:服务器1 ...
- mysql 部署master slave_MySQL Master Slave 数据同步,集群。
该文章为原创,作者:梁健,QQ:15141739,时间:2011年5月11日17:55:26 转载注明作者.最近学习了一下MySQL的集群,发现MySQL的集群有很多种方式,下面来介绍下学到的MySQ ...
- node服务器接口不稳定,node服务部署到服务器后,数据接口404
最近的一个项目,数据接口一部分是调JAVA后台的,一部分是本地node服务,弄得服务的数据源是从一个个json文件里面取的. 项目接近尾声,需要将项目打包后放到服务器上去,这个时候就醉了,java后台 ...
- mysql两台服务器怎么做数据同步_让两台服务器的MySQL数据同步(互为主从关系)...
网上找的大部分定义master-host的其实在新的MySQL中已经停用了,于是乎很悲剧的自己探索写出了这么一个东西 RedHat版本7.0 MySQL版本 5.7 服务器名称为假的!!! 服务器A: ...
- rsync与inotify实现数据实时同步
Rsync与Inotify 单一的rsync只可以进行数据同步,单一的inotify只可以实时监控文件,两者结合使用刚好满足数据实时同步的需求,下面就用一个数据发布服务器和两个web服务器实例解析rs ...
- 集群没有leader_ZooKeeper 集群中 Leader 与 Follower 的4种数据同步策略
首先要声明一点,zk集群中,leader服务器有着比较重要的存在,Follower 服务器只是处理非事务性请求,leader服务器主要负责事务性请求,Follower 服务器在遇到事务性请求以后还是会 ...
最新文章
- UCLA教授遭到举报后被停课!原因竟是不同意学生主张的“考试放水”
- ssms没有弹出服务器验证_Nginx服务器负载均衡及生成ssl密钥对、Nginx配置ssl操作示例...
- PAT甲级1142 Maximal Clique :[C++题解]图论、最大团、枚举
- K均值算法matlab代码实现
- 首发:一份国内机器学习爱好者的性别比例的抽样调查
- asp 调用java文件上传_用asp实现文件浏览、上传、下载的程序
- python表单处理_python flask 表单处理Flask-WTF
- youtube 播放列表
- java 题库管理系统_JAVA WEB 题库管理系统
- word插入页眉图片
- 论找对客服妹子对修改邓白氏码的公司信息的重要性
- H盘显示数据错误循环冗余检查要怎样办啊
- python numpy读取数据_numpy中以文本的方式存储以及读取数据方法
- 做个程序员到底好不好
- mysql查询语句是什么意思_mysql子条件查询语句是什么意思?
- acer 服务器装系统,acer重装系统图文教程
- sql 中distinct和group by
- 中南大学计算机博士就业,求救!中南大学博士毕业要求
- 农作物病害识别_FarmEasy:向农民推荐农作物变得容易
- 有GIS有意思︱讲述地图的故事
热门文章
- 爬虫学习笔记(十一)—— Scrapy框架(六):媒体管道
- 学习Kotlin(一)为什么使用Kotlin
- Centos7修改Docker默认存储位置
- 深度学习-TF函数-layers.concatenate用法 numpy数组维度
- OpenCV-Python 相机校准和消除畸变
- 使用微型计算机的基础知识,计算机应用基础考试大纲基本要求1具有使用微型计算机的基础知识.DOC...
- Dos命令控制Mysql语句(自己老记不住)
- 【c++】29.设计模式总结
- Caffe学习系列(15):计算图片数据的均值
- JSR 303 – Bean Validation 介绍及最佳实践