第三十三章 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. How To Use the Widget Factory 使用widget factory创建插件

    To start, we'll create a progress bar that just lets us set the progress once.  创建一个基于widget factory ...

  2. linux 杀掉僵尸进程 (zombie process, defunct)

    本文说明为什么会出现僵尸进程 (zombie process, defunct),以及如何杀掉僵尸进程 1. 为什么有僵尸进程 僵尸进程出现在父进程没有回收子进程的 PCB 的时候,这个时候子进程已经 ...

  3. Linux内核调试方法总结之backtrace

    backtrace [用途]用户态或者内核态程序异常退出时回溯堆栈信息 [原理]通过对当前堆栈的分析,回溯上层函数在当前栈中的帧地址,直至顶层函数.帧地址是指在栈中存在局部变量.上一级函数返回地址.寄 ...

  4. 第三方框架:EventBus

    1 研发背景 案例:我们在主页点收藏按钮,未登录状态,跳登录界面,在登录界面跳注册页面,注册成功,关闭注册页面,关闭登录页面,回到主页,刷新item列表和登录状态. 我们一般会用到发送广播和接收广播来 ...

  5. Spring Cloud Stream 使用延迟消息实现定时任务(RabbitMQ)

    应用场景 通常在应用开发中我们会碰到定时任务的需求,比如未付款订单,超过一定时间后,系统自动取消订单并释放占有物品. 许多同学的第一反应就是通过spring的schedule定时任务轮询数据库来实现, ...

  6. Delphi XE2 之 FireMonkey 入门(19) - TFmxObject 的子类们(表)

    参考: 和 FMX 相关的类(表) TFmxObject IFreeNotification             TAnimation TBitmapAnimation           TBi ...

  7. 深入理解webpack基本配置(一)

    1. 安装webpack到全局 在学习构建之前,我们来在本地文件新建一个存放项目的文件夹,比如叫demo1这个项目,然后进入demo1该项目的根目录后,执行命令 npm init运行下,一路回车(先简 ...

  8. Leaflet

    https://leafletjs.com/ https://github.com/Leaflet/Leaflet

  9. JAVA AOP面向切面编程与动态代理

    1.静态代理和动态代理的概念:   在我的另一篇博文:Java 静态代理和动态代理 中有讲到,这里就不做赘述了. JDK动态代理它的好处理是可以为我们生成任何一个接口的代理类,并将需要增强的方法织入到 ...

  10. TensorFlow学习笔记11-开始用TensorFlow

    TensorFlow运作方式 要用到的代码都在Github上.当然,如果你本地装了TensorFlow,也可以用Everything直接搜索以下文件: mnist.py fully_connected ...