第三十三章 Rsync服务

33.1)Rsync基本概述

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

33.1.1)Rsync简介

rsync英文称为remote synchronizetion,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync还可以在本地主机的不同分区或目录之间全量及曾量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。

在同步数据的时候,默认情况下,rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化同步,但是需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可是实现快速的同步备份数据。

rsync监听端口:873

rsync运行模式:C/S

client/server

客户端/服务端

小提示:利用rsync还可以实现删除文件和目录的功能,这又相当于rm命令,一个rsync相当于scp、cp、rm,但是还优于他们的每一个命令。

33.1.2)Rsync的特性

1)支持拷贝特殊文件,如连接文件、设备等。 2)可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。 3)可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p。 4)可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)。 5)可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。 6)可以通过socket(进程方式)传输文件和数据(服务端和客户端)。 7)支持匿名的活认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像。

33.1.3)生产场景架构集群备份方案

1)借助cron+rsync把所有客户服务器数据同步到备份服务器。 2)针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案。 3)通过本地打包备份,然后rsync结合inotify应用把全网数统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果。 4)定期将IDC机房的数据 备份公司的内部服务器,防止机房地震及火灾问题导致数据丢失。 5)实时同步,解决存储服务器等的单点问题。

33.1.4)备份类型介绍

备份类型有两种,分别是完全备份和增量备份。

完全备份示意图如下:

增量备份示意图如下:

33.1.5)Rsync的应用场景

33.15.1)应用场景1:推

示意图如下:

33.15.2)应用场景2:拉

示意图如下:

33.15.3)应用场景3:大量数据备份场景

示意图如下:

33.15.4)应用场景4:异地备份

示意图如下:

33.1.6)Rsync的传输模式

Rsync有三种传输模式,分别是本地方式、远程方式、守护进程。

33.1.6.1)本地传输方式

本地方式

类似于cp命令

    命令示例:[root@web01 ~]# rsync -avz file0801-1 /ml-1/
    命令语法:
#本地拷贝数据命令
Local: rsync [OPTION...] SRC... [DEST]
    完整示例:
  #在本地创建目录file0801-1,在目录file0801-1里创建文件f1.txt,在本地创建目标目录ml-1
  [root@web01 ~]# mkdir file0801-1
  [root@web01 ~]# mkdir ml-1
  [root@web01 ~]# cd file0801-1
  [root@web01 file0801-1]# touch f1.txt

  #拷贝目录file0801-1至目录ml-1下
  rsync -avz file0801-1 /ml-1/

  #检查结果
  sending incremental file list
  file0801-1/
  file0801-1/f1.txt

  sent 123 bytes received 39 bytes 324.00 bytes/sec
  total size is 0 speedup is 0.00
  [root@web01 ~]# ll /ml-1/file0801-1
  total 0
  -rw-r--r-- 1 root root 0 Aug 1 16:12 f1.txt

33.1.6.2)远程方式

远程方式

类似于scp命令

    命令示例:[root@web01 ~]# rsync -avz file0801-1 /ml-1/
    命令语法:
Access via remote shell:
    Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
    Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
完整示例:
#推 push

#先在客户端web01创建要复制的目录及文件
[root@web01 ~]# mkdir tmp2
[root@web01 ~]# cd tmp2
[root@web01 tmp2]# touch f1{.txt,.log}

#接着在服务器端backup上创建目标目录
[root@backup ~]# mkdir tmp3

#拷贝客户端上的tmp2目录至服务器端的目录tmp3中
[root@web01 tmp2]# rsync -avz tmp2 root@172.16.1.41:tmp3/



#检查结果
客户端页面:
[root@web01 ~]# rsync -avz tmp2 root@172.16.1.41:tmp3/
root@172.16.1.41's password:
sending incremental file list
tmp2/
tmp2/f1.log
tmp2/f1.txt

sent 168 bytes received 58 bytes 90.40 bytes/sec
total size is 0 speedup is 0.00


服务器端页面:(服务器端存在目录tmp2,表示已拷贝成功)
[root@backup ~]# cd tmp3
[root@backup tmp3]# ll
total 0
drwxr-xr-x 2 root root 34 Aug 1 16:58 tmp2
[root@backup tmp3]# cd tmp2
[root@backup tmp2]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 1 16:58 f1.log
-rw-r--r-- 1 root root 0 Aug 1 16:58 f1.txt
完整示例:
#拉 pull


#先在服务器端backup上创建要复制的目录及文件
[root@backup ~]# mkdir tp10
[root@backup ~]# cd tp10
[root@backup tp10]# touch aa.txt

#再在客户端web01创建目标目录
[root@web01 ~]# mkdir f08
[root@web01 ~]# mkdir f09


#拉服务器端上的tp10目录至客户端的目录f08中
[root@web01 ~]# rsync -avz root@172.16.1.41:tp10/ f08


#拉服务器端上的tp10目录至客户端的目录tp09中
[root@web01 ~]# rsync -avz root@172.16.1.41:tp10 f09



#检查结果
加/的情况下,只拷贝目录里的内容(不包含目录)
客户端页面:
[root@web01 ~]# rsync -avz root@172.16.1.41:tp10/ f08

root@172.16.1.41's password:
receiving incremental file list
./
aa.txt

sent 46 bytes received 104 bytes 42.86 bytes/sec
total size is 0 speedup is 0.00


客户端页面:(客户端存在aa.txt,但没有目录tp10)
[root@web01 ~]# cd f08
[root@web01 f08]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 1 18:00 aa.txt


不加/的情况下,拷贝目录整体(包含目录本身及目录里的内容)
客户端页面
[root@web01 ~]# rsync -avz root@172.16.1.41:tp10 f09
root@172.16.1.41's password:
receiving incremental file list
tp10/
tp10/aa.txt

sent 47 bytes received 117 bytes 65.60 bytes/sec
total size is 0 speedup is 0.00

[root@web01 ~]# cd f09
[root@web01 f09]# ll
total 0
drwxr-xr-x 2 root root 20 Aug 1 18:00 tp10 #只拷贝了tp10目录
[root@web01 f09]# cd tp10
[root@web01 tp10]# ll
total 0 #tp10下的文件并没有拷贝过来

PS:注意: rsync不管是推还是拉,推送目录的时候带/和不带/

1.带/ :/etc/ 将etc目录里的所有内容(不包括目录),推过去或者拉过来

2.不带/:/etc 将etc目录整体(包括目录及目录里的所有内容)推过去或者拉过来

33.1.6.3)守护进程

步骤1、客户端、服务端安装rsync

客户端:   web01-10.0.0.7
[root@web01 ~]# yum install -y rsync
服务端:  backup-10.0.0.41
[root@backup ~]# yum install -y rsync

步骤2、进入服务端会话页面,进行如下操作

服务端页面:
1)先修改配置文件:
[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[zls]
comment = welcome to oldboyedu backup!
path = /backup


配置文件详解:
[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync #用户名
gid = rsync #用户组
port = 873 #端口
fake super = yes #无需让rsync以root身份运行
use chroot = no #禁锢目录,不允许操作指定目录之外的目录
max connections = 200 #最大连接数200
timeout = 600 #超时时间600s 10分钟
ignore errors #忽略错误信息
read only = false #关闭只读,对备份数据可读写
list = false #不允许查看模块信息
auth users = rsync_backup #认证用户,定义虚拟用户作为连接认证用户
secrets file = /etc/rsync.passwd #认证用户的密码文件
log file = /var/log/rsyncd.log #日志文件
#####################################
#模块(任意名字都可以)
[zls] #定义模块信息
comment = welcome to oldboyedu backup! #注释信息(无关紧要)
path = /backup #路径,定义接收备份数据目录


===============================================================

2)接着创建用户
[root@backup ~]# id rsync #检查用户是否存在
id: rsync: no such user
#创建用户(不允许登录,不创建家目录)
[root@backup ~]# useradd rsync -s /sbin/nologin -M


===============================================================

3)创建一个备份目录
[root@backup ~]# mkdir /backup     #创建目录backup
#授权rsync用户
[root@backup ~]# chown -R rsync.rsync /backup/


===============================================================

4)创建虚拟用户及密码文件
[root@backup ~]# vim /etc/rsync.passwd
rsync_backup:123456 #用户名:密码
[root@backup ~]# chmod 600 /etc/rsync.passwd #授权


===============================================================

5)启动rsync添加开机自启
[root@backup ~]# ll /usr/lib/systemd/system/rsyncd.service
-rw-r--r-- 1 root root 237 Apr 26 01:17 /usr/lib/systemd/system/rsyncd.service
[root@backup ~]# systemctl start rsyncd #启动rsyncd守护进程
[root@backup ~]# systemctl enable rsyncd #允许开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.

步骤3、进入客户端会话页面,进行如下操作

客户端页面:
#创建虚拟用户的密码文件
[root@web01 ~]# vim /etc/rsync.pass
1 #输入密码,对应服务器端密码文件中的密码
[root@web01 ~]# chmod 600 /etc/rsync.pass #授权

步骤4、在客户端页面,创建目录,并在该目录下批量创建文件

客户端页面:
[root@web01 ~]# mkdir /data #创建目录data
[root@web01 ~]# cd /data #切换到目录data
[root@web01 data]# touch file{1..50} #在目录data下批量创建50个文件

Rsync的推操作:

[root@web01 data]# rsync -avz /data/ rsync_backup@172.16.1.41::wangxiaogang
#将目录data推至服务器端      在守护进程中,不考虑加/或者不加/

Rsync的拉操作

[root@web01 ~]# rsync -avz rsync_backup@172.16.1.41::wangxiaogang rt
#将服务器端的模板目录拉至客户端的rt目录中     在守护进程中,不考虑加/或者不加/

Linux架构之Rsync守护进程推和拉的更多相关文章

  1. Linux架构--------Rsync守护进程推和拉

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

  2. rsync 守护进程及实时同步

    目录 rsync 守护进程及实时同步 rsync简介 rsync特性 rsync应用场景 cp命令 scp命令 rsync的传输方式 rsync的传输模式 rsync实际使用 rsync命令 案例 r ...

  3. Linux编程之《守护进程》

    Intro ----- 守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程常 ...

  4. 一只简单的网络爬虫(基于linux C/C++)————守护进程

    守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程常常在系统引导装入时启动, ...

  5. 【Linux】rsync 守护进程的配置

    环境 centos7.2 1.首先查看是否安装rsync的相关包 rpm -qa | grep rsync rsync-3.1.2-4.el7.x86_64 如果没安装就yum install rsy ...

  6. rsync 守护进程模式搭建 与常见报错

    守护进程模式搭建 1.环境准备 2.安装rsync(做备份的服务器都安装) [root@backup ~]# yum install -y rsync 3.服务端配置 [root@backup ~]# ...

  7. Linux 下Qt实现守护进程实例(转)

     原文地址:Linux守护进程的编程方法(含实例) 作者:lingdxuyan 参考文献 Linux信号列表(zz) Linux 守护进程的编程方法 linux上编写守护进程的例程 Linux下后台守 ...

  8. Linux系统编程之--守护进程的创建和详解【转】

    本文转载自:http://www.cnblogs.com/mickole/p/3188321.html 一,守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终 ...

  9. Linux下一个简单守护进程的实现 (Daemon)

    在Linux/UNIX系统引导的时候会开启很多服务,这些服务称为守护进程(也叫Daemon进程).守护进程是脱离于控制终端并且在后台周期性地执行某种任务或等待处理某些事件的进程,脱离终端是为了避免进程 ...

随机推荐

  1. 【HDOJ6731】Angle Beats(极角排序)

    题意:二维平面上给定n个整点,q个询问 每个询问给定另外的一个整点,问其能与n个整点中任意取2个组成的直角三角形的个数 保证所有点位置不同 n<=2e3,q<=2e3,abs(x[i],y ...

  2. Android ListView焦点事件冲突问题与解决

    Android ListView对于单纯列表展示是很好用的,但是一旦牵扯到对listView进行操作就会遇到各种各样的问题.比如保存Checkbox状态与item复用的冲突.遇到可获取焦点的控件比如说 ...

  3. 解决axios异步问题

  4. 《图解设计模式》读书笔记8-3 STATE模式

    目录 State模式 示例程序 实现的功能 不使用&使用状态模式对比 示例程序的类图 代码 角色和类图 角色 类图 拓展思路 分而治之 依赖于状态的处理 谁来管理状态迁移 易于增加新状态 实例 ...

  5. JMeter Gui – TestElement约定(转自约会言行的博客,链接:http://blog.csdn.net/yue530tomtom/article/details/77649872?locationNum=4&fps=1)

    在编写任何JMeter组件时,必须注意某些特定的约定——如果JMeter环境中正确地运行JMeter组件,那么它将会运行.本部分描述了组件的GUI部分必须满足的约定. JMeter中的GUI代码严格地 ...

  6. clientdataset 修改记录 成功

    procedure TForm7.Label33Click(Sender: TObject);var i,j,k:integer;begin i:=self.DBGrid1.SelectedField ...

  7. django amdin后台改成中文

  8. oracle linux 7使用udev绑盘操作

    参考:Oracle Linux 7: Udev rule for ASM Cannot Place the ASM Disk in a Directory under /dev (Doc ID 221 ...

  9. 前端004/React常用UI组件

    每天进步一点点〜 Ant Design of React //蚂蚁金服设计平台.需要应用何种类型组件可参考API React + mobx + nornj 开发模式文件说明: [1].A.t.html ...

  10. sql语句中【模糊查询like的使用】

    1.like的使用: 在数据库软件中进行测试时,书写的格式是: 比如: select * from fdx.dbo.[User] where 1=1 and name like '%'+'a'+'%' ...