一.Rsync基本概述

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

二.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,但是还优于他们的每一个命令。

三.Rsync的特性

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

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

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

备份类型介绍

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

完全备份示意图如下:

增量备份示意图如下:

四.Rsync的应用场景

应用场景1:推

示意图如下:

应用场景2:拉

示意图如下:

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

示意图如下:

应用场景4:异地备份

示意图如下:

Rsync的传输模式

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

本地传输方式

类似于cp命令

    命令示例:[root@web01 ~]# rsync -avz file0801- /ml-/
命令语法:
#本地拷贝数据命令
Local: rsync [OPTION...] SRC... [DEST]
完整示例:
#在本地创建目录file0801-,在目录file0801-1里创建文件f1.txt,在本地创建目标目录ml-
[root@web01 ~]# mkdir file0801-
[root@web01 ~]# mkdir ml-
[root@web01 ~]# cd file0801-
[root@web01 file0801-]# touch f1.txt
​
#拷贝目录file0801-1至目录ml-1下
rsync -avz file0801- /ml-/
​
#检查结果
sending incremental file list
file0801-/
file0801-/f1.txt
​
sent bytes received bytes 324.00 bytes/sec
total size is speedup is 0.00
[root@web01 ~]# ll /ml-/file0801-
total
-rw-r--r-- root root Aug : f1.txt
​

远程方式

类似于scp命令

    命令示例:[root@web01 ~]# rsync -avz file0801- /ml-/
命令语法:
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 bytes received bytes 90.40 bytes/sec
total size is speedup is 0.00
​
​
服务器端页面:(服务器端存在目录tmp2,表示已拷贝成功)
[root@backup ~]# cd tmp3
[root@backup tmp3]# ll
total
drwxr-xr-x root root Aug : tmp2
[root@backup tmp3]# cd tmp2
[root@backup tmp2]# ll
total
-rw-r--r-- root root Aug : f1.log
-rw-r--r-- root root Aug : 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 bytes received bytes 42.86 bytes/sec
total size is speedup is 0.00
​
​
客户端页面:(客户端存在aa.txt,但没有目录tp10)
[root@web01 ~]# cd f08
[root@web01 f08]# ll
total
-rw-r--r-- root root Aug : 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 bytes received bytes 65.60 bytes/sec
total size is speedup is 0.00
​
[root@web01 ~]# cd f09
[root@web01 f09]# ll
total
drwxr-xr-x root root Aug : tp10 #只拷贝了tp10目录
[root@web01 f09]# cd tp10
[root@web01 tp10]# ll
total #tp10下的文件并没有拷贝过来

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

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

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

守护进程

步骤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 =
fake super = yes
use chroot = no
max connections =
timeout =
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 = #端口
fake super = yes #无需让rsync以root身份运行
use chroot = no #禁锢目录,不允许操作指定目录之外的目录
max connections = #最大连接数200
timeout = #超时时间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
​
===============================================================
​
)接着创建用户
[root@backup ~]# id rsync #检查用户是否存在
id: rsync: no such user
#创建用户(不允许登录,不创建家目录)
[root@backup ~]# useradd rsync -s /sbin/nologin -M
​
​
===============================================================
​
)创建一个备份目录
[root@backup ~]# mkdir /backup #创建目录backup
#授权rsync用户
[root@backup ~]# chown -R rsync.rsync /backup/
​
​
===============================================================
​
)创建虚拟用户及密码文件
[root@backup ~]# vim /etc/rsync.passwd
rsync_backup: #用户名:密码
[root@backup ~]# chmod /etc/rsync.passwd #授权
​
​
===============================================================
​
)启动rsync添加开机自启
[root@backup ~]# ll /usr/lib/systemd/system/rsyncd.service
-rw-r--r-- root root Apr : /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. )检查rsync 端口是否处于监听状态
[root@backup ~]# netstat -antup | grep
7) rsync 客户端仅需配置虚拟用户的密码,并授权为600安全权限
#方式一:适合终端执行指定用户密码文件
[root@backup ~]#  yum install rsync -y 
[root@backup ~]# echo " 123456 " >  /etc/rsync.pass
[root@backup ~]#  chmod 600 /etc/rsync.pass
#方式二:脚本使用
[root@backup ~]# export RSYNC_PASSWORD=123456

实战一:客户端推送backup目录下所有内容至rsync服务端
[root@backup ~]# export RSYNC_PASSWORD=123456
[root@backup ~]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup /backup/

实战二:客户端拉取rsync服务端backup模块数据至本地客户端的/backup 目录
[root@backup ~]# export RSYNC_PASSWORD=123456
[root@backup ~]# rsync -avz rsync_backup@172.16.1.41::backup /backup/

实战三:rsync实现数据无差异同步
#拉取远端数据:远端与本地保持一致,远端没有本地有会被删除,造成客户段数据丢失
[root@backup ~]# export RSYNC_PASSWORD=123456
[root@backup ~]# rsync -avz --delete rsync_backup@172.16.1.41::backup/ /data/

#推送数据到远端:本地与远端保持一致,本地没有远端会被删除,造成服务器端数据丢失
[root@backup ~]#  export RSYNC_PASSWORD=123456
[root@backup ~]# rsync -avz --delete /date/ rsync_backup@172.16.1.41::backup/

实战四: rsync的Limit限速
#文件过大导致内部交换机带宽被沾满,导致用户的请求无法响应
[root@backup ~]#  export RSYNC_PASSWORD=123456
[root@backup ~]#  rsync -avz --bwlimit=1 rsync_backup@172.16.1.41::backup/ /data/ 

步骤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服务 33.1)Rsync基本概述 rsync是一款开源.快速.多功能.可实现全量及增量的本地或远程数据同步备份的优秀工具.rsync软件适用于Unix/linux/Window ...

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

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

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

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

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

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

  5. Linux学习之守护进程详解

    Linux系统守护进程详解                                                              ---转自:http://yuanbin.blog ...

  6. linux下的守护进程daemon

    什么是守护进程?其实感觉守护进程并没有什么明确的定义,只是守护进程有一些特征,这是它需要遵循的. 守护进程的第一个特征是长时间在后台运行的程序,并且主要是为了提供某种服务,而为了能够让服务尽可能随时都 ...

  7. linux shell脚本守护进程监控svn服务

    最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在 ...

  8. linux下daemon守护进程的实现(以nginx代码为例)

    ngx_int_t ngx_daemon(ngx_log_t *log) { int fd; // 让init进程成为新产生进程的父进程: // 调用fork函数创建子进程后,使父进程立即退出.这样, ...

  9. Linux编程实现守护进程

    Linux 守护程序 守护进程(Daemon)它是在一个特定的过程的背景进行.它独立于控制终端的和周期性地执行某些任务或待某些事件.是一种非常实用的进程. Linux的大多数server就是用守护进程 ...

随机推荐

  1. Mysql 创建函数出现This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA

    This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary mys ...

  2. Powershell + HTA

    众所周知,Powershell早已被集成到了windows的环境中,国外大牛玩得不亦乐乎,而国内圈子却很少听到讨论Powershell的,HTA更不用说了,不是学计算机的或许根本不知道这是什么鬼 Li ...

  3. python插件快速安装

    windows下安装python插件没有linux那样方便. 可以先安装easy_install.我的是win64  下载地址  直接下载py文件运行,将对应目录添加到环境变量,我的是D:\dev_t ...

  4. 分布式消息队列 Celery 的最佳实践

    目录 目录 不使用数据库作为 Broker 不要过分关注任务结果 实现优先级任务 应用 Worker 并发池的动态扩展 应用任务预取数 保持任务的幂等性 应用任务超时限制 善用任务工作流 合理应用 a ...

  5. 【疑难杂症】Firefox 火狐浏览器 关闭到 http://detectportal.firefox.com 的流量

    日期:2019-07-18 00:02:58 作者:Bay0net 介绍: 0x01. 问题描述 火狐浏览器的时候,抓包会出现很多这样的数据包.  具体的 URL http://detectport ...

  6. laravel 添加后台登陆守护器

    后台不能在一个浏览器登陆,下面简单配置下即可解决这个问题. 设置路由如下: <?php /** * 后台路由,从Illuminate\Routing\Router控制器的auth()方法中复制过 ...

  7. JMeter常用的4种参数化方式-操作解析

    目录结构 一.JMeter参数化简介 1.JMeter参数化的概念 2.JMeter参数化方式之使用场景对比 二.JMeter参数化的4种主要方式-操作演练 1.User Parameters(用户参 ...

  8. tensorflow学习之搭建最简单的神经网络

    这几天在B站看莫烦的视频,学习一波,给出视频地址:https://www.bilibili.com/video/av16001891/?p=22 先放出代码 #####搭建神经网络测试 def add ...

  9. numpy添加新的维度

    原文链接:https://blog.csdn.net/xtingjie/article/details/72510834 numpy中包含的newaxis可以给原数组增加一个维度 np.newaxis ...

  10. Dubbo原理学习

    Dubbo源码及原理学习 阿里中间件团队博客 Dubbo官网 Dubbo源码解析 Dubbo源码解析-掘金 Dubbo源码解析-赵计刚 Dubbo系列 源码总结+最近感悟