一、备份

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. python之map

    python之Map函数   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # map()函数使用举例 # 功能: ...

  2. Mybatis 注解形式

        1.查询 // 查询 @Select("select id, name, type, numbers, cancelled, completed, percentage from c ...

  3. iOS多线程之超实用理论+demo演示(可下载)

    目录 背景简介 GCD.OperationQueue 对比 核心理念 区别 GCD 队列 串行队列(Serial Queues) 并发队列(Concurrent Queues) 串行.并发队列对比图 ...

  4. CountDownLatch、CyclicBarrier

    CountDownLatch CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能.比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行 ...

  5. 《Redis入门指南》笔记

    第1章 简介 1.1 历史与发展 2008年 意大利创业公司创始人因对mysql性能不满意,于是他决定开发redis. 2009年 redis初版由他一个人开发完成.redis是"remot ...

  6. 2020 CiGA Game Jam活动总结

    CiGA Game Jam 总结 今年8月14.15.16号,48小时游戏开发--Game Jam开始了.蠢新第一次参加Game Jam,今年还是线上开展,情绪复杂= = 还有一个坏消息,晓航旅游缺席 ...

  7. PJzhang:CVE-2020-1472微软NetLogon权限提升漏洞~复现

    猫宁~~~ 虚拟机上进行 安装windows 2008 R2 查看服务器ip 本地连接属性,取消ipv6,ip设置为192.168.43.158,子网掩码255.255.255.0,网关192.168 ...

  8. Maven环境搭建及常用命令、生命周期

    一.下载maven包,解压 二.配置环境变量,MAVEN_PATH=解压路径 添加到path中 三.测试  mvn -v 查看maven版本 四.设置本地仓库的路径 在conf文件夹下的setting ...

  9. python下正则表达式的随笔记录

    使用了下正则的表达式: 目的:取出字符串中{}中的内容 最后使用的正则表达式为 {(.*?)} 先看   .*?  : 首先  .  是用来匹配字符串,但是只能匹配一次. 所以加上  *  ,可以让 ...

  10. Book of Shaders 03 - 学习随机与噪声生成算法

    0x00 随机 我们不能预测天空中乌云的样子,因为它的纹理总是具有不可预测性.这种不可预测性叫做随机 (random). 在计算机图形学中,我们通常使用随机来模拟自然界中的噪声.如何获得一个随机值呢, ...