首页 > 系统相关 >Linux基础26 rsync服务, 三种传输方式

Linux基础26 rsync服务, 三种传输方式

时间:2023-06-26 18:12:27浏览次数:46  
标签:26 avz backup 备份 传输方式 rsync 172.16 root

Rsync服务

一、备份

1.什么是备份?
备份就是把重要的数据或文件再次复制一份保存起来(给源文件增加一个副本)
2.为什么要备份?
数据很重要!!!
出现故障之后,需要恢复数据(软件服务出现问题几率很小,80%都是人为故障)
3.能不能不做备份
对于不重要的数据,可以不做备份
对于不必要的数据可以选择定时清理
4.备份常用工具
本地复制   cp
远程传输   scp   rsync

二、rsync服务概念

1.rsync简介
rsync英文成为remote synchronization,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、
远程备份的功能,这个功能类似ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync
还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这有类似cp命令。但是同样也优于cp命令,cp每次都是全量靠别,而rsync
可以增量拷贝。
在同步数据的时候,默认情况下,rsync通过其独特的"quick check"算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据
权限、属主等属性的变化同步,但是需要指定响应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据

rsync简称远程同步,可以实现不同主机之间的同步,同时支持增量和全量的备份
不同主机:windows --> linux    linux --> linux   mac  --> linux     mac --> windows
rsync监听的端口:873
rsync运行模式:C/S模式    client/server

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

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

4.rsync如何实现备份(备份方式)
1)全备:将数据完全的备份下来
2)增备:全备之后,把发生变化数据再备份一次

三、rsync应用场景

1.rsync的传输方式:pull拉  push推
推:
客户端将需要的数据上传到服务端
拉:
客户端将需要的数据下载下来

2.传输存在的问题
推:
如果推送的客户端机器过多,容易造成推送数据缓慢
拉:
如果客户端过多,下载数据会对服务端造成压力过大

3.rsync多server端
例:现在有20台机器,怎么有效快速的缓解推送和拉取的速度和压力问题


4.异地备份场景

 

四、Rsync传输模式*

传输模式:
本地方式
远程方式
守护方式

 

1.本地方式(类似cp,不支持推送和拉取,只是单纯复制)

# 本地传输语法
    命令    参数、选项    源文件    目标文件
Local:    rsync    [OPTION...]    SRC...    [DEST]
# 语法实例
[root@web01 ~]# rsync -avz 1.txt /mnt/
# 语法拆分
rsync    # 备份命令
-avz    # 参数、选项
./1.txt    # 源文件
/mnt/    # 目标位置

类似于cp,但是cp是全量复制,每次都显示覆盖,rsync是增量,只要文件没有变化就不会再传输,如果有任意改变就传输

2.远程传输方式(类似scp)

# pull拉取数据命令语法
Pull:    rsync    [OPTION...]    [USER@]HOST:SRC...    [DEST]
# pull拉取数据命令语法实例
web02到web01拉取文件
rsync -avz [email protected]:/root/1.txt ./    # 从172.16.1.7上拉取1.txt到当前目录下
# pull拉取数据命令语法拆分
rsync    # 命令
-avz    # 参数
root    # 远端服务器用户
@    # 分隔符
172.16.1.7:    # 远端服务器主机IP
/root/1.txt    # 源地址文件
./        # 目标地址

注意:
[root@web02 ~]# rsync -avz [email protected]:/var/log/ ./    # 拉取远程目录下的文件
[root@web02 ~]# rsync -avz [email protected]:/var/log ./    # 拉取远程目录下的文件及目录

# push推送数据命令语法
Push: rsync    [OPTION...]    SRC...    [USER@]HOST:DEST
# push推送数据命令语法示例
web02推送文件至web01
[root@web02 ~]# rsync -avz ./log/ [email protected]:/mnt/    # 推送目录下的文件到远端位置
[root@web02 ~]# rsync -avz ./log [email protected]:/mnt/    # 推送目录及目录下的文件到远端
# push推送数据命令语法拆分
rsync    # 命令
-avz    # 参数
./log    # 本地文件或目录
root    # 远端服务器用户
172.16.1.7:    # 远端主机ip
/mnt/    # 远端服务器位置

3.守护进程传输模式

1)为什么要用守护进程模式
1.rsync传输时,使用系统用户和系统密码(极其不安全)
2.使用普通用户的时候,会出现权限不足的情况
2)守护进程传输模式语法
# pull拉取数据命令
Pull:    rsync    [OPTION...]    [USER@]HOST::SRC...    [DEST]    # USER可以不加,SRC模块名(如果是一个:SRC就是目录,USER就是真实用户),DEST目标地址
# pull拉取数据命令示例
# 客户端web01拉取backup服务器的数据
[root@web01 ~]# rsync -avz [email protected]::backup ./
[root@web01 ~]# rsync -avz [email protected]::backup/ ./    # backup/相当于在模块的路径结尾加上/
rsync    # 命令
-avz    # 参数
rsync_backup    # 虚拟用户
@    # 分隔符
172.16.1.41    # 远端主机
::backup    # 模块名
./    # 当前位置

注意:
拉取服务器模块名对应的目录下的文件,拉取的文件可以使任意属主属组

# push推送数据命令语法
Push:    rsync    [OPTION...]    SRC...    [USER@]HOST::DEST
# 客户端web01推送数据
[root@web01 ~]# rsync -avz backup/ [email protected]::backup
rsync    # 命令
-avz    # 参数
backup/    # 本地文件
rsync_backup    # 虚拟用户
@    # 分隔符
172.16.1.41    # 远端主机
::backup    # 模块名

注意:
推送时,远端模块对应的目录权限一定是rsyncd服务配置的用户

4.守护进程模式实践

1)环境准备
主机角色        外网ip        内网ip        主机名
Rsync服务端    10.0.0.41        172.16.1.41    backup
Rsync客户端    10.0.0.7        172.16.1.7    web01
2)安装rsync(客户端和服务端都要操作)
yum install -y rsync

以下都在backup服务器上操作
3)配置rsync(服务端)*
rpm -qc rsync    # 查看配置文件路径
# 修改配置文件
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


# 配置文件注释
# 运行进程的用户
uid = rsync
# 运行进程的用户组
gid = rsync
# 服务的监听端口
port = 873
# 无需让rsync以root身份运行,保证文件属性的安全机制
fake super = yes
# 操作那个目录就不允许跳出该目录
use chroot = no
# 最大连接数
max connections = 200
# 超时时间(单位秒)
timeout = 600
# 忽略错误信息
ignore errors
# 只读,配置成false,文件可读写(针对配置的path)
read only = false
# 查看模块信息
list = false
# 定义虚拟用户(rsync传输时使用的用户)(不是真实存在,不需要创建)
auth users = rsync_backup
# 定义虚拟用户的密码文件
secrets file = /etc/rsync.passwd
# 日志文件
log file = /var/log/rsyncd.log
############################
# 定义模块的名字
[backup]
# 注释,备注(没什么用,可以删)
comment = welcome to oldboyedu backup!
# 定义真实文件目录
path = /backup

4)创建系统用户
# 根据配置文件中运行进程的用户创建
useradd rsync -s /sbin/nologin -M    # 不需要登录,不需要家目录(可以直接useradd rsync, 但这样更好)

5)创建虚拟用户的密码文件并授权
echo "rsync_backup:123456" > /etc/rsync.passwd        # 用户名为设定的虚拟用户,密码为123456
# 建议echo写入,vim写入可能多写空格,也被识别

chmod 600 /etc/rsync.passwd        # 只要和密码相关设置为600

6)创建文件目录
mkdir /backup
chown -R rsync.rsync /backup/    # 文件目录授权(如不改,可以拉,但不能推,因为rsync无法对root权限文件夹操作)

7)启动服务
systemctl start rsyncd
# 查看服务有没有起来(看873端口)
netstat -lntp
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      15057/rsync

服务端设置完成!

8)客户端验证
方式一:输入密码的方式
[root@web01 ~]# rsync -avz [email protected]::backup ./
[root@web01 ~]# rsync -avz backup/ [email protected]::backup

方式二:指定密码文件的方式
客户端添加密码文件
echo "123456" > /etc/rsync.passwd    # 密码文件的名字随便定
chmod 600 /etc/rsync.passwd

rsync -avz [email protected]::backup ./ --password-file=/etc/rsync.passwd
rsync -avz backup/ [email protected]::backup --password-file=/etc/rsync.passwd

方式三:配置环境变量的方式
客户端添加
export RSYNC_PASSWORD=123456    (这样设置是临时的,服务器重启就没了)
rsync -avz [email protected]::backup ./
rsync -avz backup/ [email protected]::backup

 

标签:26,avz,backup,备份,传输方式,rsync,172.16,root
From: https://www.cnblogs.com/ludingchao/p/17506417.html

相关文章

  • C/C++航空客运订票系统[2023-06-26]
    C/C++航空客运订票系统[2023-06-26]实验1航空客运订票系统问题描述:航空客运订票的业务活动包括查询航线和客票预订的信息、客票预订和办理退票等,设计一个程序使上述任务借助计算机来完成。基本要求:(一)系统必须存储的数据信息。1.信息:飞机抵达的城市、航班号、飞机号、起降......
  • 6.26工作——智慧隧道监测与管理平台需求确定、技术选择
    一、了解公司1.公司业务公司主要是做管廊、公路、隧道的监控管理平台;此次我们主要的开发任务是隧道的监控管理平台,并提供可复用的功能模块。2.公司合作伙伴海康威视:海康威视致力于将物联感知、人工智能、大数据技术服务于千行百业,引领智能物联新未来。远东通信:远东通信作为......
  • 2023-06-26:在大小为 n x n 的网格 grid 上,每个单元格都有一盏灯,最初灯都处于 关闭 状
    2023-06-26:在大小为nxn的网格grid上,每个单元格都有一盏灯,最初灯都处于关闭状态给你一个由灯的位置组成的二维数组lamps其中lamps[i]=[rowi,coli]表示打开位于grid[rowi][coli]的灯即便同一盏灯可能在lamps中多次列出,不会影响这盏灯处于打开状态当一盏灯处于......
  • 20230626水题选做
    「数学基础」第6章期望问题单选错位题意单选把答案填在后面那道题了。假设所有题都正确,求答对题目的期望值。分析期望入门题。\(E(Ans)=\sumP[i]\)。那么显然有答对本题的期望为\(\dfrac{1}{\max\left(a\left[i+1\right],a\left[i\right]\right)}\)。代码#inc......
  • mysql 8.0.26以下版本的bug
    ############################## https://bugs.mysql.com/bug.php?id=103636               ####################################......
  • AtCoder Beginner Contest 267 ABCDE
    AtCoderBeginnerContest267A-SaturdayProblemStatement题意:问你给定的天到礼拜六还要几天。思路:直接算。#include<bits/stdc++.h>usingnamespacestd;intmain(){ strings; cin>>s; if(s=="Monday")cout<<6-1<<endl; elseif(s=="Tues......
  • 26.冒泡排序
    每当皇帝选妃时,首席太监小桂子总是忍不住在旁边偷窥这些候选的美女,有一次他发现做为伴读小书童的你居然犯了个常人都可以轻易看出的错误,有几位候选的美女站成如下一排:当我们采用前面的选择排序时,我们仍然要将候选者遍历5遍,才能完成最终的排序,但其实,本身这些美女除了第一个外,已经......
  • 其他——26电梯导航栏
    思路:主要思路就是对滑动事件进行监听。监听到当前滑动到的位置,然后判断当前所在的位置处于哪一块区域。给它addactive的类,当滑走当前区域,就会removeactive类。监听点击事件,其实跟css里的scroll-behavior差不多。点击导航,然后获取点击的href,然后获取要显示的区域的位置,然后......
  • 78264用于粘贴
    Pleaserankthefollowingelementsinorderofimportanceforyourbusinesswhenconsideringacross-borderpaymentplatform.Pleaseprioritizethemfromhighesttolowest:1.Pricing(rateandexchangerate):Theplatform'sfeestructureandexchang......
  • 【雕爷学编程】Arduino动手做(126)---GP2Y0A02YK0F红外测距模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......