RSYNC部署
1 rsync简介
1.1 什么是rsync
rsync: - a fast, versatile, remote (and local) file-copying tool
rsync:是一种快速,多功能,远程和本地文件拷贝的工具
rsync --version:查看rsync软件版本
备份服务重要性: 企业中所有要进行操作的数据文件,一定操作前备份。
企业备份数据方法:重要数据需要保存在专门备份服务器上 第三方网盘存储。
1.2 rsync特点
可以实现全量和增量备份
1.2.1 全量和增量示意图
全量:将主机A的数据全部传送给主机B
增量:将主机A新增的数据传送给主机B
1.2.2 增量备份的原理
方式一: 对源数据和目标目录中的数据进行比对属性信息
在同步备份数据时,默认情况下,Rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。
方式二: 利用文件指纹进行判断文件是否相同
md5运算生成校验数值信息(指纹信息)验证文件是否改变
将生成的md5值发送给目标主机,目标主机验证接收的md5值是否与本机文件所产生的md5相同,如何不相同。则进行传输。
1.3 rsync软件功能介绍
rsync即是软件也是命令。
类似于 cp 命令 | 实现本地备份传输数据 | |
---|---|---|
类似于scp 命令 | 远程备份传输数据 | |
类似于 rm 命令 | 实现无差异同步备份 | |
类似于 ls 命令 | 本地文件信息查看 |
1.3.1 rsync=cp
备份文件:rsync /etc/hosts /tmp
备份目录:rsync -a /aaa /tmp
1.3.2 rsync=scp
scp:远程传输数据
传输文件:scp /etc/hosts root@172.16.1.41:/tmp
传输目录:scp -rp /aaa root@172.16.1.41:/tmp
rsync
备份文件:rsync /etc/hosts root@172.16.1.41:/tmp
备份目录:rsync -rp /aaa root@172.16.1.41:/tmp
利用rsync传输目录数据
目录数据后面有/ /aaa/ 将目录下面的数据内容进行传输
** 目录数据后面没/ /aaa 将目录本身和目录下面的数据内容进行传输**
1.3.3 rsync=rm
快速清空数据
mkdir null #创建一个空目录
rsync -avz --delete /null/ /test
注释:--delete 无差异同步参数 将两个目录中的数据保持高度一致。
可以理解为我(/null)有的东西,你也有。我(/null)没有的东西,你也不能有。null是个空目录,--delete保证了无差异同步,所以test目录的内容被清空。
1.3.4 rsync=ls
查看文件:rsync /etc/hosts
查看目录:rsync /test
1.4 rsync的7个特性总结
(1)支持拷贝普通文件与特殊文件如链接文件,设备等。
(2)可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
#tar zcvf backup_1.tar.gz /opt/data -exclude=clsn
说明:在打包/opt/data时就排除了clsn命名的目录和文件。
(3)可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p。
(4)可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar -N)。
# 将备份/home 目录自 2008-01-29 以来修改过的文件
# tar -N 2008-01-29 -zcvf /backups/inc-backup_$(date +%F).tar.gz /home
# 将备份 /home 目录昨天以来修改过的文件
# tar -N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date +%F).tar.gz /home
# 添加文件到已经打包的文件
# tar -rf all.tar *.gif
说明:这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
(5)可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)
(6)可以通过socket(进程方式)传输文件和数据(服务端和客户端)*****。重点掌握
(7)支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。
2 rsync命令使用方法
2.1 rsync的工作方式
2.1.1 本地数据备份(同步)方式
本地复制备份文件 == cp
Local: rsync [OPTION...] SRC... [DEST]
SRC:要备份的数据
Dest:要备份到什么路径中
语法:rsync /etc/hosts /tmp
2.1.2 远程数据备份(同步)方式
推送,拉取都是在客户端操作
Access via remote shell:远程数据备份文件
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]====客户端将远程主机数据拉取到本地主机
Pull: 拉取
[USER@]: 指定以什么用户身份登录到远程主机(默认是当前系统用户)
HOST: 远程主机IP地址或者主机名称
SRC: 远程要拉取的数据信息
DEST: 保存到本地路径信息
语法:rsync root@10.0.0.41:/tmp/test.txt /aaa #将10.0.0.41主机的test.txt文件拉取到本地主机
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST====客户端将本地主机数据推送到远端主机
[USER@]: 指定以什么用户身份登录到远程主机(默认是当前系统用户)
Push: 推送
HOST: 远程主机IP地址或者主机名称
SRC: 本地要推送的数据信息
DEST: 保存到远程路径信息
语法: rsync /etc/hosts root@172.16.1.41:/tmp #将hosts文件推送给10.0.0.41主机/tmp目录
2.1.3 守护进程方式备份(同步)数据
Access via rsync daemon====利用守护进程方式备份数据
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: 客户端验证rsync方式
(1)rsync [OPTION...] SRC... [USER@]HOST::DEST
src: 本地要推送的数据信息
[USER@] 认证用户名称信息
HOST: 备份服务器IP地址或者主机名称,host后面需要有两个冒号
DEST: 指定模块信息的名字backup
语法: rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
(2)rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST #不常用,理解即可
PORT:端口是之前默认的可以不写,但如果改变要加上端口
DEST:备份的路径
守护进程方式作用:
(1)控制备份传输数据连接数
(2)可以实现免交互传输数据
(3)可以实现认证访问功能
(4)可以实现安全访问控制
2.1.4 守护进程方式备份数据原理
文字说明:
(1)客户端:发送要传输数据的请求
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
(2)服务端:接收到传输数据请求,进行用户认证操作。
服务端确认用户信息是否正确,确认客户端输入的用户 == 服务端配置文件里的用户
服务端确认用户密码是否正确,确认客户端输入的密码 == 服务端相应用户的密码信息
在进行用户认证时,需要判断两个文件的权限是否是600
(3)客户端:将数据传输到服务端,会转换传输的身份,将数据信息权限改动 rsync
(4)服务端:如果想让数据正确保存,修改备份目录属主属组为rsync.rsync
3 rsync服务部署
3.1 服务端部署
3.1.1 安装rsync
yum install -y rsync #安装rsync软件
rpm -qa rsync #查看rsync软件版本
rsync-3.1.2-4.el7.x86_64 #3.1.2版本
3.1.2 编辑配置文件
vi /etc/rsyncd.conf
#rsync_config
#created by HQ at 2017
##rsyncd.conf start##
uid = rsync #虚拟用户rsync,管理备份目录
gid = rsync #虚拟用户组rsync,管理备份目录
port = 873 #服务默认端口号873
fake super = yes #伪装管理员功能开启 便于可以执行chgrp命令
use chroot = no #安全配置
max connections = 200 #最大连接数 同时支持200个客户端连接
timeout = 300 #连接超时时间 单位:秒
pid file = /var/run/rsyncd.pid #进程信息文件,便于获取进程号停止进程,判断服务是否启动,避免反复启动
lock file = /var/run/rsync.lock #锁文件:在最大连接数达到200时,会进行限制连接操作
log file = /var/log/rsyncd.log #服务运行时日志文件
ignore errors #忽略传输过程中一些小的问题
read only = false #指定备份目录的权限为可读可写 false:假
list = false #改为true,客户端可以列表显示服务端模块详细信息
hosts allow = 172.16.1.0/24 #安全策略配置,设置一个白名单,只允许172.16.1这个网段进行访问
hosts deny = 0.0.0.0/32 #安全策略配置 设置一个黑名单,不允许哪个网段进行访问
auth users = rsync_backup #定义认证用户 rsync_backup为认证用户
secrets file = /etc/rsync.password #密码文件 用户密码信息 格式:rsync_backup:oldboy123
[backup] #模块的名称(可以任意起名)
comment = "backup dir by oldboy" #模块注释说明信息
path = /backup #备份的目录
以上为rsync配置文件的说明,如需配置请下载rsyncd.zip或者将说明中#号注释的全部删掉。
3.1.3 创建虚拟用户rsync
id rsync #查看以下是否有rsync这个用户
useradd rsync -M -s /sbin/nologin #创建rsync虚拟用户
3.1.4 创建密码文件并修改访问权限为600
echo "rsync_backup:oldboy123" >/etc/rsync.password
chmod 600 /etc/rsync.password #只能root用户才能查看密码
3.1.5 创建备份目录/修改目录属主和属组信息
mkdir /backup
chown rsync.rsync /backup
3.1.6 启动服务程序/重启服务程序
systemctl start rsyncd
systemctl restart rsyncd
systemctl enable rsyncd
3.1.7 客户端备份存储测试
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
执行命令后显示如下图,则证明服务端部署成功。在这里注意的是输入的密码是3.1.4步骤中的密码。
3.2 客户端部署
3.2.1 创建密码文件 并修改权限
echo oldboy123 >/etc/rsync.password #将3.1.4步骤中的密码写入到rsync.password(可任意起名)
chmod 600 /etc/rsync.password #修改权限只能root查看密码
3.2.2 交互式传输数据
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
3.2.3 免交互式传输数据
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
执行命令后显示如下图,则证明客户端部署成功。
4 rsync命令参数说明
-avz | 常用参数 | |
---|---|---|
-a | 属于一个归档参数,等于直接使用 -rlptgoD 的参数效果 | |
-v | 显示数据传输过程信息 | |
-z | 传输文件时,对文件进行压缩处理(提高传输效率 节省带宽) | |
-r | 递归备份传输数据 | |
-l | 保持链接文件属性不变 | |
-p | 保持普通文件属性权限不变 | |
-t | 保持文件时间信息不被改变(mtime修改时间) | |
-g | 保持文件属组信息不变 | |
-o | 保持文件属主信息不变 | |
-D | 保持设备文件属性信息不变 | |
--delete | 实现无差异同步参数 让服务器目录中数据信息和备份目录中的数据信息保持高度一致 |
|
--exclude=PATTERN | 指定排除不需要传输的文件信息 | |
--exclude-from=file | 文件名所在目录文件,即可以实现排除多个文件 | |
--bwlimit=RATE | 限速功能,单位为M |
RSYNC部署的更多相关文章
- windows下rsync部署安装
windows下rsync部署安装 2012-06-05 12:06:13| 分类: 系统 | 标签:rsync windows |字号 订阅 rsync在windows与windows ...
- sersync+rsync原理及部署
标签:sersync+rsync部署文档 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liubao0312.blog.51ct ...
- Hudson安装配置、部署应用及分析
一.部署环境 机器:一台linux虚机,内存1G,操作系统CentOS release 5.6,硬盘100G. 实验应用:乐学方舟后台部署(非正式环境) 应用环境:apache-tomcat-7.0. ...
- Windows和Linux之间 rsync数据同步
转载于 https://www.linuxidc.com/Linux/2014-01/95722p2.htm rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——rem ...
- sersync部署
rsync : wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz Sersync: wget https://raw.git ...
- 运维数据同步工具:rsync,serync,csync,drbd,info(基于文件系统)
Rsync官方站点:http://rsync.samba.org 1. Rsync rsync是一款开源的实现数据全量与增量同步备份的工具 生产环境中使用的场景: 1:一般用于数据异地备份 2:用于 ...
- inotify+rsync实现实时同步部署
1.1.架构规划 1.1.1架构规划准备 服务器系统 角色 IP Centos6.7 x86_64 NFS服务器端(NFS-server-inotify-tools) 192.168.1.14 Cen ...
- rsync实现负载均衡集群文件同步,搭建线上测试部署环境
闲来无事,搭建一个负载均衡集群,至于负载均衡集群搭建过程,找时间写下.这次主要写集群之间的文件同步,以及线上测试环境的搭建. 笔者看过很多公司都没有线上测试环境,真是崩溃了,不造怎么确保线上线下环境一 ...
- rsync+inotify实时同步环境部署记录
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足.首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件 ...
随机推荐
- This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.
Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when ...
- MS SQL SERVER搜索某个表的主键所在的列名
原文:MS SQL SERVER搜索某个表的主键所在的列名 SELECT SYSCOLUMNS.name FROM SYSCOLUMNS,SYSOBJECTS,SYSINDEXES,SYSINDEX ...
- SqlServer 可更新订阅队列读取器代理错误:试图进行的插入或更新已失败
原文:SqlServer 可更新订阅队列读取器代理错误:试图进行的插入或更新已失败 今天发现队列读取器代理不停地尝试启动但总是出错: 其中内容如下: 队列读取器代理在连接"Publicati ...
- C#应用配置信息保存和读取
//保存信息 SystemConfig.WriteConfigData(“字段名称”, “这里是需要保存的内容”); //读取信息 SystemConfig.GetConfigData(“字段名称”, ...
- ThreadPoolExecutor的一点理解 专题
corePoolSize(maxActiveThreadSize):线程池大小,决定着新提交的任务是新开线程云执行还是放到任务队列中,也是线程池的最最核心的参数.一般线程池开始时是没有线程的,只有当任 ...
- MFC OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别
OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别,如果没有注意这个问题就会出现无厘头式的绘图问题-- 效果就是出不来!在经过 ...
- QT---Winsocket获取网关(Gateway) 主机IP等信息
基于WinPcap库做开发,需要利用到局域网的默认网关地址和Mac地址,但是WinPcap实现获取网关IP地址没有很好的思路,可以知道的是网关的接收和发出的数据包数量一般是比局域网内的各主机要多的 ...
- ASP.NET 5 (vNext) 牛刀小試:自帶 DI 容器
小引 在 ASP.NET 5(vNext)之前,亦即 MVC 4/5.Web API 2 的时代,MVC 与 Web API 框架彼此有非常相似的设计,却是以不同的代码来实现.现在,ASP.NET 5 ...
- Java代码消除switch/case,if/else语句的几种实现方式
转自:https://my.oschina.net/stefanzhlg/blog/372413 我们在平时的编码中,我们经常会遇到这样的情况: 使用过多的switch/case 或者 if else ...
- centos yum 安装 jdk1.8
JDK: 版本:1.8 服务器默认安装1.7,所以不使用默认安装 yum -y list java* --查看yum的jdk安装包 yum install java-1.8.0-openjdk jav ...