一、备份

1.什么是备份?
1)把重要的数据或者文件再次复制一份并保存下来

2.为什么要做备份?
1)数据的重要性
2)为了出现故障,恢复数据

3.能不能不备份?
1)重要的数据一定要备份
2)不重要的可以不备份

4.备份的常用工具
1)cp
2)scp
3)rsync

二、rsync简介

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

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

rsync简称远程同步
不同主机之间传递数据:
Linux ---> windows linux ---> linux windows ---> linux linux ---> mac

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

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

4.备份类型
1)全备:将数据从头备份一次

2)增备:对于新增加的数据进行备份

3)差异备份:针对上一次全备之后更新的数据进行备份

三、rsync的应用场景

1.rsync传输方式
1)push 推
客户端将数据传输到服务端

2)pull 拉
客户端将数据下载下来

2.问题
1)push 推
当客户端数量多,容易造成推送数据阻塞

2)pull 拉
如果客户端数量过多,会对服务端造成很大压力

3.大量服务器备份场景
#假设:像现在有20台机器要备份到一台机器
使用推和拉结合的方式

4.异地备份场景

四、rsync的传输模式

1.本地方式

2.远程方式

3.守护进程方式

五、本地模式(类似于cp)

1.概述
类似于cp命令,但是cp是全量复制,每次都提示替换
rsync是增量,只要文件属性没有更改就不会替换

2.语法
#本地拷贝数据命令
命令 选项 源文件 目标
rsync [OPTION...] SRC... [DEST]

3.示例
[root@backup ~]# rsync -avz 1.txt /tmp/
sending incremental file list

sent 44 bytes received 12 bytes 112.00 bytes/sec
total size is 0 speedup is 0.00

[root@backup ~]# rsync -avz 1.txt /tmp/
#命令拆分
rsync   #命令
-avz   #选项
1.txt   #源文件
/tmp/   #目标地址

六、远程模式(类似于scp)

1.pull拉取数据
#语法:
命令 选项 用户 @ 主机:源文件 目标地址
rsync [OPTION...] [USER@]HOST:SRC... [DEST]    #如果用户不写,则以当前用户去连接远程机器

#示例
[root@web01 ~]# rsync -avz root@172.16.1.41:/root/1.txt ./
receiving incremental file list
1.txt
sent 43 bytes received 84 bytes 28.22 bytes/sec
total size is 0 speedup is 0.00

#拆分语句
rsync         #命令
-avz        #选项
root        #用户
@        #分隔符
172.16.1.41:    #主机地址
/root/1.txt    #源文件,要拉取得文件
./      #拉取到的目录地址

#注意:
#拉取远程服务器目录及目录下的文件
[root@web01 ~]# rsync -avz root@172.16.1.41:/tmp ./
#拉取远程服务器目录下的文件,不包含目录本身
[root@web01 ~]# rsync -avz root@172.16.1.41:/tmp/ ./

2.push推送数据
#语法:
rsync [OPTION...] SRC... [USER@]HOST:DEST

#示例:
[root@web01 ~]# rsync -avz file1 root@172.16.1.41:/root/
root@172.16.1.41's password:
sending incremental file list
file1

sent 83 bytes received 35 bytes 78.67 bytes/sec
total size is 0 speedup is 0.00

#命令拆分
rsync    #命令
-avz   #选项
file1    #源文件
root   #用户
@    #分隔符
172.16.1.41:   #主机
/root/      #目标地址

七、守护进程模式

1.为什么使用守护进程模式?
1)rsync远程传输时需要使用系统用户及密码
2)如果使用普通用户,又会出现权限不足的情况

2.守护进程传输模式语法
#语法
rsync [OPTION...] [USER@]HOST::SRC... [DEST]

八、搭建服务端守护进程模式

1.环境准备

主机 IP 身份
backup 172.16.1.41 rsync服务端
web01 172.16.1.7 rsync客户端

2.安装rsync(做备份的服务器都安装)
[root@backup ~]# yum install -y rsync

3.服务端配置
[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
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup

[root@backup ~]# vim /etc/rsyncd.conf
#指定运行程序的用户
uid = rsync
#运行程序的用户组
gid = rsync
#服务的监听端口
port = 873
#不需要root用户启动,安全机制
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
#####################################
#模块名字
[backup]
#注释
comment = welcome to oldboyedu backup!
#真实文件目录
path = /backup

4.服务端创建用户
[root@backup ~]# useradd rsync -s /sbin/nologin -M

5.服务端创建密码文件
[root@backup ~]# vim /etc/rsync.passwd
rsync_backup:123456

[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd

#授权
[root@backup ~]# chmod 600 /etc/rsync.passwd

6.服务端创建真实文件目录
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync.rsync /backup/

7.服务端启动服务
[root@backup ~]# systemctl start rsyncd

#验证启动
[root@backup ~]# netstat -lntp
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 18673/rsync
tcp6 0 0 :::873 :::* LISTEN 18673/rsync

[root@backup ~]# ps -ef | grep rsync
root 18673 1 0 17:01 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
root 18680 7850 0 17:02 pts/0 00:00:00 grep --color=auto rsync

九、客户端验证推送

1.输入密码的方式
#推送数据
[root@web01 ~]# rsync -avz file2 rsync_backup@172.16.1.41::backup
Password: 123456
sending incremental file list
file2

sent 87 bytes received 43 bytes 37.14 bytes/sec
total size is 0 speedup is 0.00

#拉取数据
[root@web01 ~]# rsync -avz rsync_backup@172.16.1.41::backup ./
Password:
receiving incremental file list
./
qiudaodsb

sent 53 bytes received 173 bytes 64.57 bytes/sec
total size is 0 speedup is 0.00

2.指定密码文件的方式
#客户端配置密码文件
[root@web01 ~]# vim /etc/rsyncd.password
123456
[root@web01 ~]# echo "123456" > /etc/rsyncd.password

#授权
[root@web01 ~]# chmod 600 /etc/rsyncd.password

#推送数据
[root@web01 ~]# rsync -avz file3 rsync_backup@172.16.1.41::backup --password-file=/etc/rsyncd.password
sending incremental file list
file3

sent 87 bytes received 43 bytes 86.67 bytes/sec
total size is 0 speedup is 0.00

#拉取数据
[root@web01 ~]# rsync -avz rsync_backup@172.16.1.41::backup ./ --password-file=/etc/rsyncd.password
receiving incremental file list
./
qiudaocsb

sent 50 bytes received 211 bytes 174.00 bytes/sec
total size is 0 speedup is 0.00

3.配置环境变量的方式
[root@web01 ~]# export RSYNC_PASSWORD=123456

#拉取数据
[root@web01 ~]# rsync -avz rsync_backup@172.16.1.41::backup ./

#推送数据
[root@web01 ~]# rsync -avz file3 rsync_backup@172.16.1.41::backup

第二章 rsync服务原理的更多相关文章

  1. 第2章 rsync算法原理和工作流程分析

    本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释. 以下是本文的姊妹篇: 1.rsync(一):基本命令和用法 2.rsync(二):ino ...

  2. 第二章 Javac编译原理

    注:本文主要记录自<深入分析java web技术内幕>"第四章 javac编译原理" 1.javac作用 将*.java源代码文件转化为*.class文件 2.编译流程 ...

  3. <Mastering KVM Virtualization>:第二章 KVM内部原理

    在本章中,我们将讨论libvirt.QEMU和KVM的重要数据结构和内部实现.然后,我们将深入了解KVM下vCPU的执行流程. 在这一章,我们将讨论: libvirt.QEMU和KVM的内部运作方式. ...

  4. 一起来学Spring Cloud | 第二章:服务注册和发现组件 (Eureka)

    本篇文章,很浅显的一步步讲解如何搭建一个能运行的springcloud项目(带所有操作截图).相信!看完本篇之后,你会觉得springcloud搭建如此简单~~~~ 一. Eureka简介: 1.1  ...

  5. 第二章 微服务构建:Spring Boot

    此处介绍Spring Boot的目的除了它是Spring Cloud的基础外,也由于其自身的各项优点,如自动化配置.快速开发.轻松部署等,非常适合用作微服务架构中各项具体微服务的开发框架. 本章内容: ...

  6. 第二章 微服务网关基础组件 - zuul入门

    一.zuul简介 1.作用 zuul使用一系列的filter实现以下功能 认证和安全 - 对每一个resource进行身份认证 追踪和监控 - 实时观察后端微服务的TPS.响应时间,失败数量等准确的信 ...

  7. 白话SpringCloud | 第二章:服务注册与发现(Eureka)-上

    前言 从本章节开始,正式进入SpringCloud的基础教程.从第一章<什么是SpringCloud>中我们可以知道,一个微服务框架覆盖的东西是很多的,而如何去管理这些服务或者说API接口 ...

  8. 第二章、DHCP原理与配置

    目录 一.了解DHCP服务 1DHCP概述: 2DHCP好处 3DHCP的分配方式 二.DHCP工作过程 DHCP租约过程 三.使用 DHCP动态配置主机地址 1DHCP服务优点 2可分配的地址信息主 ...

  9. CentOS7下rsync服务的基本详解和使用

    第1章 Rsync基本概述 1.1 什么是Rsync rsync是一款开源,快速,多功能的可实现增量的本地或远程的数据镜像同步备份的优秀工具.适用于多个平台.从软件名称可以看出来是远程同步的意思(re ...

随机推荐

  1. display值的分类

    整体来讲,display的值可以分为6个大类,1个全局类,一共是7大类: 外部值 内部值 列表值 属性值 显示值 混合值 全局值 外部值,指的是这些值只会直接影响一个元素的外部表现,而不影响元素里面的 ...

  2. JDK15正式发布,划时代的ZGC同时宣布转正

    你发任你发,我用Java8.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BA ...

  3. C#开发PACS医学影像三维重建(一):使用VTK重建3D影像

    VTK简介: VTK是一个开源的免费软件系统,主要用于三维计算机图形学.图像处理和可视化.Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的. 因为使用C#语言开发,而VTK是C++ ...

  4. 【Java并发编程】从CPU缓存模型到JMM来理解volatile关键字

    目录 并发编程三大特性 原子性 可见性 有序性 CPU缓存模型是什么 高速缓存为何出现? 缓存一致性问题 如何解决缓存不一致 JMM内存模型是什么 JMM的规定 Java对三大特性的保证 原子性 可见 ...

  5. Java 内存模型(Java Memory Model,JMM)

    基本概念 JMM 本身是一种抽象的概念并不是真实存在,它描述的是一组规范,通过这组规范定义了程序的访问方式 JMM 同步规定 线程解锁前,必须把共享变量的值刷新回主内存 线程加锁前,必须读取主内存的最 ...

  6. linux学习(五)Linux 文件与目录管理

    一.Linux处理目录的常用命令 ls : 列出目录 cd :切换目录 pwd :显示目前的目录 mkdir :创建一个新的目录 rmdir :删除一个空的目录 cp : 复制文件或目录 rm : 移 ...

  7. Docker 容器化部署 Python 应用

    Docker 是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建.打包为一个轻量级容器,并在任何地方运行.Docker 会在软件容器中自动部署应用程序. 在本篇中,我将介绍如 ...

  8. 每日一个知识点系列:volatile的可见性原理

    每日一个知识点系列的目的是针对某一个知识点进行概括性总结,可在一分钟内完成知识点的阅读理解,此处不涉及详细的原理性解读. img 看图说话 关键点1: 总线嗅探器(MESI 缓存一致性原理 ) 关键点 ...

  9. Linux MMC 驱动子系统简述(源码剖析)

    1. Linux MMC 驱动子系统 块设备是Linux系统中的基础外设之一,而 MMC/SD 存储设备是一种典型的块设备.Linux内核设计了 MMC子系统,用于管理 MMC/SD 设备. MMC ...

  10. MySQL 8.0索引合并

    简介 参考https://dev.mysql.com/doc/refman/8.0/en/index-merge-optimization.html#index-merge-intersection. ...