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
--daemon daemon表示以守护进程的方式启动rsync服务

5 企业备份服务应用

5.1 企业备份服务多模块配置

环境条件:

人员 模块 模块对应备份目录
开发人员 devop /devop
运维人员 sa /sa
数据库人员 dba /dba

第一步:修改配置文件
vi /etc/rsyncd.conf

[sa]
comment = "backup dir by sa"
path = /sa
[devop]
comment = "backup dir by devop"
path = /devop
[dba]
comment = "backup dir by dba"
path = /dba

第二步:创建并修改备份目录

mkdir /{sa,dev,dba} -p
chown rsync.rsync /{sa,dev,dba}
ll -d /{sa,dev,dba}
drwxr-xr-x 2 rsync rsync 6 Jul 15 16:24 /dba
drwxr-xr-x 6 rsync rsync 140 Jul 15 16:23 /dev
drwxr-xr-x 2 rsync rsync 6 Jul 15 16:24 /sa

补充扩展:如果统一将数据存储在一个目录中,如何进行区分不同数据是哪个用户存储的?又或者如何保持推送的数据属主属组不变?
要推送的数据:

[root@yang home]#ll 5.txt
-rw-r--r-- 1 oldgirl oldgirl 0 Jul 14 11:42 5.txt

修改配置文件:

uid = root
gid = root
#fake super = yes

修改备份目录权限

chown root.root /backup/

5.2 企业备份数据进行排除备份

环境准备:

mkdir /oldboy/{a..c} -p
touch /oldboy/{a..c}/oldboy{01..03}.txt
[root@yang oldboy]#tree
.
├── a
│   ├── oldboy01.txt
│   ├── oldboy02.txt
│   └── oldboy03.txt
├── b
│   ├── oldboy01.txt
│   ├── oldboy02.txt
│   └── oldboy03.txt
└── c
├── oldboy01.txt
├── oldboy02.txt
└── oldboy03.txt

参数:
--exclude:            排除指定单个数据信息
--exclude-from:    排除指定多个数据信息
要求1:备份/oldboy整个数据,排除b目录不要同步备份 排除c目录中oldboy03.txt文件不要备份

[root@yang /]#rsync -avz /oldboy/ --exclude=b --exclude=c/oldboy03.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
a/
a/oldboy01.txt
a/oldboy02.txt
a/oldboy03.txt
c/
c/oldboy01.txt
c/oldboy02.txt sent 385 bytes received 134 bytes 1,038.00 bytes/sec
total size is 0 speedup is 0.00

PS:--exclude指定排除数据信息,目录结构必须是相对路径,相对于传输的目录而言

要求2:备份/oldboy整个数据,排除b目录中01.txt ,02.txt  c目录中 01.txt, 02 .txt
exclude-from=file        要创建一个文件

vi /oldboy/exclude.txt		#编辑exclude.txt
b/oldboy01.txt #写入要排除的
b/oldboy02.txt
c/oldboy01.txt
c/oldboy02.txt

执行命令:

[root@yang oldboy]#rsync -avz /oldboy/ --exclude-from=/oldboy/exclude.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
exclude.txt
a/
a/oldboy01.txt
a/oldboy02.txt
a/oldboy03.txt
b/
b/oldboy03.txt
c/
c/oldboy03.txt sent 514 bytes received 161 bytes 1,350.00 bytes/sec
total size is 60 speedup is 0.09

5.3 企业备份服务创建多级模块目录

rsync -avz /oldboy/  rsync_backup@172.16.1.41::backup/sa/ --password-file=/etc/rsync.password

ps:模块目录下创建目录是一级一级创建,不能一次性创建多级目录

5.4 企业备份数据访问控制

hosts allow = 172.16.1.0/24   --- 允许172.16.1.0网段主机存储数据
hosts deny = 0.0.0.0/32         --- 阻止0.0.0.0地址主机存储数据

备份服务配置文件中:全局配置 局部配置
全局配置:在模块之上配置都是全局配置  可以影响所有模块  
局部配置:在模块中的配置都是局部配置  可以影响指定模块
PS:局部配置优先于全局配置,白名单优先于黑名单

5.5 企业备份数据模块列表功能

list = false   --- 如果改为true,客户端可以列表显示服务端详细模块信息
list=true

[root@backup ~]#rsync -avz rsync_backup@172.16.1.41::
backup "backup dir by oldboy"
sa "backup dir by sa"
devop "backup dir by devop"
dba "backup dir by dba"

5.6 企业应用无差异同步

--delete:保证客户端和服务端数据高度一致

清空数据目录:rsync -avz --delete /null/  172.16.1.41:/test	#null为空目录
清空数据文件:rsync -avz --delete /aaa.txt /test/test.txt #aaa.txt为空文件
rsync -avz --delete /aaa.txt 172.16.1.41:/bbb/bbb.txt

补充:传输大的文件,如何显示传输过程 (-P)

[root@yang ~]# rsync -avzP /tmp/500M rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
500M
524,288,000 100% 115.28MB/s 0:00:04 (xfr#1, to-chk=0/1) sent 509,967 bytes received 43 bytes 68,001.33 bytes/sec
total size is 524,288,000 speedup is 1,027.00

5.7 企业中rsync端口号发生改变

服务端端口号发生改变 --port 端口号

[root@yang ~]# rsync -avzP /tmp/500M rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password --port 874
sending incremental file list sent 47 bytes received 20 bytes 134.00 bytes/sec
total size is 524,288,000 speedup is 7,825,194.03

5.8 企业服务端配置文件保存路径不对

如果rsyncd.conf配置文件不在/etc目录下,而是在/tmp下,该如何启动rsync服务

[root@yang ~]# rsync --daemon --config=/tmp/rsync.conf
[root@yang ~]# netstat -lntup|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 9933/rsync
tcp6 0 0 :::873 :::* LISTEN 9933/rsync
[root@yang ~]# rsync --daemon --address=172.16.1.41
[root@yang ~]# netstat -lntup |grep 873
tcp 0 0 172.16.1.41:873 0.0.0.0:* LISTEN 2583/rsync

--daemond的参数

daemon启动扩展参数
--daemon daemon表示以守护进程的方式启动rsync服务。
--address 绑定指定IP地址提供服务。
--config=FILE 更改配置文件路径,而不是默认的/etc/rsyncd.conf
--port=PORT 更改其它端口提供服务,而不是已经改变的873端口

6 备份服务的优缺

优点:实现增量备份数据  
缺点:在同步大量小文件,容易造成数据丢失      (可以将目录进行压缩处理,然后进行同步)
         在同步大文件数据,容易造成数据传输中断,断点续传功能不强。(可以用FTP进行同步)

rsync 服务及部署的更多相关文章

  1. Rsync服务端部署流程

    Rsync服务端部署流程       Rsync服务端部署流程: 一.rsync服务端配置流程 配置rsync配置文件/etc/rsyncd.conf 创建同步的本地目录/dingjian 并根据需要 ...

  2. rsync 服务快速部署手册

    一.rsync服务端安装 1.查看rsync安装包 # rpm -qa rsync rsync-3.0.6-12.el6.x86_64 2.安装rsync 系统默认都会安装rsync软件包的,如果查看 ...

  3. Rsync服务部署使用

    rsync服务搭建过程(daemon模式) 配置服务 在/etc/rsyncd.conf文件中写入相应的配置: uid = root gid = root use chroot = no max co ...

  4. CentOS7下部署rsync服务

    说明: 在CentOS7下部署rsync服务和在CentOS6上部署基本上是一样的,只是CentOS7自带了rsyncd启动脚本,由systemd管理而已. rsync服务端配置 [root@SERV ...

  5. rsync 服务部署详解

    第1章 rsync 软件介绍 1.1 什么是rsync rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具. http://www.samba.org/ft ...

  6. Rsync 服务部署与参数详解

    Rsync 简介 rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows等多种操作系统平台. 传统的 ...

  7. Rsync服务

    第1章 Rsync开篇介绍 1.1 rsync的定义 Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windo ...

  8. Rsync服务实战

    目录 1 安装rsync软件 2 配置 /etc/rsyncd.conf 3 创建用户(运行rsync服务的用户身份) 4 创建虚拟用户密码文件(客户端连接时候使用) 5启动 rsync 服务,并加入 ...

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

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

随机推荐

  1. MySQL中information_schema 数据库 是干什么的

    MySQL中information_schema是什么 大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个information_schema数据库. information_sc ...

  2. 【做中学】第一个 Go 语言程序:漫画下载器

    原文地址: 第一个 Go 语言程序:漫画下载器: https://schaepher.github.io/2020/04/11/golang-first-comic-downloader 之前学了点 ...

  3. Shell 变量引用实例

    初学 Shell 编程时,对变量各种引用使用不太熟悉,走了很多弯路,本文记录变量引用的一些用法,希望对大家有所帮助. 引用 引用指将字符串用引用符号引起来,以防止特殊字符被 shell 脚本解释为其他 ...

  4. Springboot系列(七) 集成接口文档swagger,使用,测试

    Springboot 配置接口文档swagger 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配 ...

  5. requets中urlencode的问题

    前言 今天团队群里有师傅问requests怎么设置不解码,这里是语误,其实师傅想说的是,如果设置不编码. 一开始我没懂,然后师傅们解答了这个问题后,我想了会儿懂了. 在一些CTF题目中,可能会碰到这样 ...

  6. tensorflow1.0 构建lstm做图片分类

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #this is data mni ...

  7. thinkphp--create()的使用方法(个人感悟)

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

  8. 关于flex弹性布局

    http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

  9. centos7下端口映射

    firewall-cmd --zone=external --add-forward-port=port=:proto=tcp:toport=:toaddr=192.168.10.10 --perma ...

  10. webug3.0靶场渗透基础Day_1

    第一关: 最简单的get注入 单引号报错 http://192.168.129.136/pentest/test/sqli/sqltamp.php?gid=1' order by 5 --+     ...