部署Rsync服务器-差异化数据同步

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据同步 1个月
简介:

目录:
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(服务器信息文件)。
 

rsync

                                 图1-1
 

 
  1. [root@centos6 ~]# yum -y install rsync 
  2. [root@centos6 ~]# mkdir /common; cp /etc/init.d/* /common/ 
  3. [root@centos6 ~]# vim /etc/rsync.conf 
 
  1. #/etc/rsyncd.conf 
  2. #设置服务器信息提示文件名称,在该文件中编写提示信息。 
  3. motd file = /etc/rsyncd.motd 
  4. #开启Rsync数据传输日志功能。 
  5. transfer logging = yes 
  6. #设置日志文件名称,可以通过log format参数设置日志格式。 
  7. log file = /var/log/rsyncd.log 
  8. #设置Rsync进程号保存文件名称。 
  9. pid file = /var/run/rsyncd.pid 
  10. #设置锁文件名称。 
  11. lock file = /var/run/rsync.lock 
  12. #设置服务器监听的端口号,默认为873。 
  13. port = 873 
  14. #设置服务器所监听网卡接口的IP地址,这里服务器IP地址为192.168.0.254。 
  15. address = 192.168.0.254 
  16. #设置进行数据传输时所使用的账户名称或ID号,默认使用nobody。 
  17. uid = nobody 
  18. #设置进行数据传输时所使用的组名称或GID号,默认使用nobody。 
  19. gid = nobody 
  20. #设置user chroot为yes后,rsync会首先进行chroot将根映射到path参数路径下,对客户 
  21. #端而言系统的根就是path参数所指定的路径。但这样做需要root权限,并且在同步符号 
  22. #连接资料时仅会同步名称,而内容将不会同步。 
  23. use chroot = no 
  24. #是否允许客户端上传数据,这里设置为只读。 
  25. read only = yes 
  26. #设置并发连接数,0代表无限制。超出并发数后,如果依然有客户端连接请求,则将会收 
  27. #到稍后重试的提示消息。 
  28. max connections = 10 
  29. #模块,Rsync通过模块定义同步的目录,模块以[name]的形式定义,这个跟Samba定义共 
  30. #享目录是一样的效果。在Rsync中也可以定义多个模块。 
  31. [common] 
  32. #comment定义注释说明字串。 
  33. comment = Web content 
  34. #同步目录的真实路径通过path指定。 
  35. path = /common 
  36. #忽略一些IO错误 
  37. ignore errors 
  38. #exclude可以指定例外的目录,即将common目录下的某个目录设置为不同步数据。 
  39. #exclude = test
  40. #设置允许连接服务器的账户,账户可以是系统中不存在的用户。 
  41. auth users = tom,jerry 
  42. #设置密码验证文件名称,注意该文件的权限要求为600,仅在设置auth users参数后有效。 
  43. secrets file = /etc/rsyncd.secrets 
  44. #设置允许哪些主机可以同步数据,可以是单个IP也可以是网段,多个IP与网段之间使用空 
  45. #格分割。 
  46. hosts allow=192.168.0.0/255.255.255.0 
  47. #设置拒绝所有(除hosts allow定义的主机外)。 
  48. hosts deny=* 
  49. #客户端请求显示模块列表是本模块名称是否显示。 
  50. list = false 
 
  1. [root@centos6 ~]# echo "tom:pass" > /etc/rsyncd.secrets 
  2. [root@centos6 ~]# echo "jerry:111" >> /etc/rsyncd.secrets 
  3. [root@centos6 ~]# chmod 600 /etc/rsyncd.secrets 
  4. [root@centos6 ~]# echo “welcome to access” >/etc/rsyncd.motd 
  5. [root@centos6 ~]# rsync --daemon 
  6. [root@centos6 ~]# echo “rsync --daemon” >> /etc/rc.local 
  7. [root@centos6 ~]# iptables -I INPUT -p tcp --dport 873 -j ACCEPT 

由于Rsync默认并不是开机启动项,如果需要设置Rsync为开机启动服务可以将rsync –daemon命令写入/etc/rc.local文件实现开启启动。
2.客户端同步数据
现在让我们开始同步数据吧,在客户端主机同样使用rsync命令就可以进行初始化数据传输,使用同样的程序但不需要--daemon选项。

 
  1. [root@centos6 ~]# yum -y install rsync 
  2. [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
实例:

 
  1. [root@centos6 ~]# rsync -t *.c foo:src/ 
  2. 将本机当前目录下的.c结尾的文件拷贝至foo主机的src目录下。 
  3. [root@centos6 ~]# rsync -avz foo:src/bar /data/tmp 
  4. 从foo主机上以递归方式将src/bar目录拷贝至本机/data/tmp目录。 
  5. [root@centos6 ~]# rsync -avz foo:src/bar/ /data/tmp 
  6. 从foo主机上以递归方式将src/bar目录下的所有内容拷贝至本机/data/tmp目录,但在/data/tmp目录下不会创建bar目录。 
  7. [root@centos6 ~]# rsync -avz /src/foo /dest 
  8. 将本机/src/foo目录拷贝至/dest目录。 
  9. [root@centos6 ~]# rsync -avz tom@192.168.0.254::common /test3 
  10. 使用tom账户连接远程192.168.0.254主机的rsync进程,将common模块定义的path路径下载至本地test3目录。 
  11. [root@centos6 ~]# rsync -avz 192.168.0.254::common /dest 
  12. 匿名下载192.168.0.254服务器的common模块至本地/dest目录。 
  13. [root@centos6 ~]# rsync --list-only tom@192.168.0.254:: 
  14. 显示192.168.0.254服务器所有的模块名称,需要服务端配置list = true才会显示。 
  15. [root@centos6 ~]# echo “pass” > rsync.pass 
  16. [root@centos6 ~]# rsync -avz --delete --password-file=rsync.pass 192.168.0.254::common /dest 


创建密码文件,使用密码文件进行非交互式数据同步。
如果客户端需要定期对Rsync服务器的数据进行备份,可以编写Shell脚本,通过计划任务实现数据的定期备份工作。下面的脚本为精简版数据备份脚本范例:

 
  1. [root@centos6 ~]# cat rsync_bak.sh 
  2. #!/bin/bash 
  3. #This script does backup through rsync. 
  4. #Date:2012-10-1 
  5. #Version:1.0 beta 
  6. export PATH=/bin:/usr/bin:/usr/local/bin 
  7. SRC=common 
  8. DEST=/data 
  9. Server=192.168.0.254 
  10. User=tom 
  11. #password file must not be other-accessible. 
  12. Passfile=/root/rsync.pass 
  13. #If the DEST directory not found, then create one. 
  14. [ ! -d $DEST ] && mkdir $DEST 
  15. [ ! -e $Passfile ] && exit 2 
  16. 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 ,如需转载请自行联系原作者








相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
Linux
只需一步轻松实现linux服务器指定数据同步
直接在命令行执行下面的命令就可以实现指定目录下指定文件同步
131 0
|
监控 开发工具 数据安全/隐私保护
|
监控 网络安全 数据安全/隐私保护
|
2月前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理数据同步时(mysql->hive)报:Render instance failed
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
262 4
|
2月前
|
关系型数据库 MySQL 数据库
【MySQL】手把手教你MySQL数据同步
【MySQL】手把手教你MySQL数据同步
|
2天前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
16 1
|
2月前
|
SQL 关系型数据库 MySQL
“震撼揭秘!Flink CDC如何轻松实现SQL Server到MySQL的实时数据同步?一招在手,数据无忧!”
【8月更文挑战第7天】随着大数据技术的发展,实时数据同步变得至关重要。Apache Flink作为高性能流处理框架,在实时数据处理领域扮演着核心角色。Flink CDC(Change Data Capture)组件的加入,使得数据同步更为高效。本文介绍如何使用Flink CDC实现从SQL Server到MySQL的实时数据同步,并提供示例代码。首先确保SQL Server启用了CDC功能,接着在Flink环境中引入相关连接器。通过定义源表与目标表,并执行简单的`INSERT INTO SELECT`语句,即可完成数据同步。
164 1
|
2月前
|
SQL canal 关系型数据库
(二十四)全解MySQL之主从篇:死磕主从复制中数据同步原理与优化
兜兜转转,经过《全解MySQL专栏》前面二十多篇的内容讲解后,基本对MySQL单机模式下的各方面进阶知识做了详细阐述,同时在前面的《分库分表概念篇》、《分库分表隐患篇》两章中也首次提到了数据库的一些高可用方案,但前两章大多属于方法论,并未涵盖真正的实操过程。接下来的内容,会以目前这章作为分割点,开启MySQL高可用方案的落地实践分享的新章程!
851 1
|
2月前
|
canal 关系型数据库 MySQL
"揭秘阿里数据同步黑科技Canal:从原理到实战,手把手教你玩转MySQL数据秒级同步,让你的数据处理能力瞬间飙升,成为技术界的新晋网红!"
【8月更文挑战第18天】Canal是一款由阿里巴巴开源的高性能数据同步系统,它通过解析MySQL的增量日志(Binlog),提供低延迟、可靠的数据订阅和消费功能。Canal模拟MySQL Slave与Master间的交互协议来接收并解析Binary Log,支持数据的增量同步。配置简单直观,包括Server和Instance两层配置。在实战中,Canal可用于数据库镜像、实时备份等多种场景,通过集成Canal Client可实现数据的消费和处理,如更新缓存或写入消息队列。
420 0

热门文章

最新文章