数据备份系列:Rsync 备份详解(一)

一、Rsync 简介

1.1 Rsync 是一个远程增量文件备份软件工具

1.2 Rsync 的特性

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

1.3 Rsync 的相关参数

-a                  #归档模式传输, 等于-tropgDl    -t -r -o -p -g -D -l
-r                  #递归传输目录及子目录,即目录下得所有目录都同样传输。
-p                  #保持文件权限
-o                  #保持文件属主信息
-g                  #保持文件属组信息
-t                  #保持文件时间信息
-l                  #保留软连接
-D                  #保持设备文件信息
-L                  #保留软连接指向的目标文件
-z                  #传输时进行压缩以提高效率
-v                  #详细模式输出, 打印速率, 文件数量等
-P                  #显示备份过程 + --partial
-e                  #使用的信道协议,指定替代 rsh 的 shell 程序
-n			        #显示那些将要传输的文件,并不真正传输
--exclude=PATTERN   #指定排除不需要传输的文件
--exclude-from=file #排除不需要的文件
--include=PATTERN
--include-from=file
--bwlimit=100       #限速传输,单位 MB
--partial           #断点续传
--existing          #仅仅更新那些已经存在于 DST 的文件,而不备份那些新创建的文件
--delete            #删除那些 DST 中 SRC 没有的文件
--force             #强制删除目录,即使不为空
--password-file=xxx #使用密码文件
--port              #指定端口传输

1.4 Rsync 常见的使用场景

  • 定时同步:Rsync + Cron
  • 实时同步:Rsync + Innotify

1.5 Rsync 常见的传输模式

1.5.1 本地传输

格式:
    rsync [参数] [源路径] [目的路径]

参数:
    -t    #保持文件时间信息
    -r    #递归传输

示例:
    1.将 /opt/test.tar.gz 备份至 /backup 目录下:rsync /opt/test.tar.gz /backup
    2.将 /var/log 目录备份至 /backup/log 目录下:rsync -r /var/log/ /backup/log/

1.5.2 远程传输

1.常规远程模式
格式:
    rsync [参数] [本地源路径] [用户]@[ip]:[远程目的路径]


示例:
    (1).上传数据:
    将 /opt/test.tar.gz 上传目标服务器的 /backup 目录下:
        rsync /opt/test.tar.gz root@ip:/backup
    (2).下载数据:
    将目标服务器 /opt/test.tar.gz 下载到 /backup 目录下:
        rsync root@ip:/opt/test.tar.gz /backup

2.守护进程模式
    即 以守护进程的模式运行服务端
    优点:(1)保证数据安全、(2)数据归档

二、Rsync 的搭建部署

2.1 资源准备

服务器IP 地址操作系统作用
目标服务器192.168.0.162Centos7服务端
目标服务器192.168.0.163WinServer服务端
源服务器192.168.0.164Centos7客户端
源服务器192.168.0.165WinServer客户端

        说明:本次配置实验分两部分:

        (1)linux 作为服务端(目标服务器),linux + windows 作为客户端

        (2)windows 作为服务端(目标服务器),linux + windows 作为客户端

2.2 以 linux 作为服务端

2.2.1 linux 服务端进行配置

        Linux 服务端:192.168.0.162

(1)服务安装

#服务端安装 Rsync 服务
[root@rsync162 ~]# yum install -y rsync

(2)配置 rsync 配置文件

[root@rsync162 ~]# vi /etc/rsyncd.conf
#rsync 服务端口
port=9999
#rsync 日志文件
log file = /var/log/rsync.log
#rsync 进程 id 文件
pid file = /var/run/rsyncd.pid
#同步模块项目
[proname]
#同步的目标目录
path = /backup
#同步传输前是否切换到指定目录下(用于增强传输的安全性)
use chroot = yes
#最大连接数
max connections = 4
#只读文件是否同步,yes表示无法同步只读文件
read only = no
#客户端请求显示模块列表是,是否显示该模块
list = true
#服务运行的用户
uid = root
#服务运行的用户组
gid = root
#进行验证的用户,即客户端进行传输时的用户
auth users = test
#连接时的用户和密码信息
secrets file=/etc/rsyncd.passwd
#允许的 ip
hosts allow = *

(3)创建测试用户及配置密码文件

[root@rsync162 ~]# useradd test
[root@rsync162 ~]# passwd test
更改用户 test 的密码 。
新的 密码:
无效的密码: 密码包含用户名在某些地方
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@rsync162 ~]# 
[root@rsync162 ~]# 
[root@rsync162 ~]# vi /etc/rsyncd.passwd
test:test123456

(3)目标文件夹创建与授权

#创建备份目录
[root@rsync162 ~]# mkdir /backup
[root@rsync162 ~]# chown test:test /backup

(4)启动 rysnc 服务并开放端口

#先关闭 selinux
[root@rsync162 ~]# setenforce 0
#启动 rsync 服务
[root@rsync162 ~]# systemctl start rsyncd
#查看服务状态
[root@rsync162 ~]# netstat -tunlp |grep 9999
tcp        0      0 0.0.0.0:9999            0.0.0.0:*               LISTEN      30129/rsync         
tcp6       0      0 :::9999                 :::*                    LISTEN      30129/rsync
#防火墙开放端口
[root@rsync162 ~]# firewall-cmd --permanent --add-port=9999/tcp
success
[root@rsync162 ~]# firewall-cmd --reload
success

(5)设置开机自启

[root@rsync162 ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service

2.2.2 以 windows 作为客户端

        Windows 客户端:192.168.0.165

(1)下载客户端:

        官网下载安装文件:https://www.itefix.net/cwrsync

        这边实验版本为:5.4.1 (文件最后会提供下载,若官网无法下载可参考使用)

(2)在 windows 客户端目录下创建 passwd.txt 文件,并配置同服务端的 /etc/rsyncd.passwd 密码相一致,不同的是客户端不需要加上用户名(这里的密码,可以同 test 系统用户密码一样,也可以不一样,总之就是服务端和客户端要一致即可)

(3)测试客户端传输文件 (这里的 passwd.txt 和 windows.zip.gz 都在当前目录下)

C:\soft\cwRsync_5.4.1_x86_Free>.\rsync.exe -avzP --password-file=passwd.txt --port=9999 windows.zip.gz test@192.168.0.162::proname

(4)在服务器上查看接收到的文件

[root@localhost ~]# ll /backup/
总用量 20424
-rwx------. 1 root 401 20913856 3月  20 15:52 windows.zip.gz

(5)测试客户端传输目录

C:\soft\cwRsync_5.4.1_x86_Free>.\rsync.exe -avzP --password-file=passwd.txt --po
rt=9999 windows_test test@192.168.0.162::proname

 (6)在服务器上查看接收到的目录和文件

[root@rsync162 ~]# ll /backup/
总用量 20424
drwx------. 2 root 401      106 4月  23 2023 windows_test
-rwx------. 1 root 401 20913856 3月  20 15:52 windows.zip.gz
[root@rsync162 ~]# ll /backup/windows_test/
总用量 23684
-rwx------. 1 root 401      284 3月  20 17:29 cc.txt
-rwx------. 1 root 401  3328826 4月  13 17:09 cwRsync_5.4.1_XiaZaiBa.zip
-rwx------. 1 root 401 20913856 3月  20 15:52 windows.zip.gz
-rwx------. 1 root 401      286 4月   3 13:10 新建文本文档.txt

(7)测试从服务端同步数据到客户端

#这里我把目录 windows_test 重命名为 server_test
[root@rsync162 ~]# mv /backup/windows_test /backup/server_test
#在windows的执行文件目录下创建了 from_server 文件夹
#C:\soft\cwRsync_5.4.1_x86_Free\from_server
C:\soft\cwRsync_5.4.1_x86_Free>.\rsync.exe -avzP --password-file=passwd.txt --port=9999 test@192.168.0.162::proname from_server

(8)在客户端中新建的 from_server 文件夹下可以看到已经接收到数据

(9)如果要使用绝对路径

# /cygdrive/c/ 代表 C 盘目录
C:\soft\cwRsync_5.4.1_x86_Free>.\rsync.exe -avzP --password-file=passwd.txt --port=9999 test@192.168.0.162::proname /cygdrive/c/soft/cwRsync_5.4.1_x86_Free/from_server

#不能使用如下路径
C:\soft\cwRsync_5.4.1_x86_Free\from_server

 2.2.3 以 Linux 作为客户端

        Linux 客户端:192.168.0.164

(1)客户端安装 rsync 服务

#客户端安装 Rsync 服务
[root@rsync164 ~]# yum install -y rsync

(2)Linux 客户端以常规远程方式传输数据文件测试(不同于 windows 客户端,linux 客户端可以直接使用常规的远程模式进行数据同步,其用法和 scp 命令相似)

#客户端测试传输文件
[root@rsync164 ~]# rsync -avz linux.tar.gz root@192.168.0.162:/backup
root@192.168.0.162's password: 
sending incremental file list
linux.tar.gz

sent 2,465,340 bytes  received 35 bytes  182,620.37 bytes/sec
total size is 2,465,302  speedup is 1.00

#服务端查看文件
[root@rsync162 ~]# ll /backup/
总用量 2408
-rw-r--r--. 1 root root 2465302 4月  13 22:29 linux.tar.gz

(3)Linux 客户端以守护进程方式传输数据文件测试(服务端在上面已经以守护进程模式启动了服务,所以这里测试我们只需要在 linux 客户端上做配置)

#创建密码文件
[root@rsync164 ~]# vi /etc/rsync.pass
test123456

#传输测试
[root@rsync164 ~]# rsync -avz --port 9999 --password-file /etc/rsync.pass linux.tar.gz  test@192.168.0.162::proname
ERROR: password file must not be other-accessible

#修改文件权限
[root@rsync164 ~]# chmod 600 /etc/rsync.pass 

#重新测试
[root@rsync164 ~]# rsync -avz --port 9999 --password-file /etc/rsync.pass linux.tar.gz  test@192.168.0.162::proname      
sending incremental file list
linux.tar.gz

sent 2,465,341 bytes  received 35 bytes  234,797.71 bytes/sec
total size is 2,465,302  speedup is 1.00

#服务端查看接收的文件
[root@rsync162 ~]# ll /backup/
总用量 22832
-rw-r--r--. 1 root root  2465302 4月  13 22:29 linux.tar.gz

2.3 以 Windows 作为服务端

        Windows 服务端版本使用 4.1.0 版本(文件最后会提供下载)

 2.3.1 服务端安装与配置

        Windows 服务端:192.168.0.163

(1)双击服务进行安装,服务用户可以用默认的,建议是自己定义

(2)安装即可,默认安装位置在:C:\Program Files (x86)\ICW\

(3)安装完成之后,系统会自动多出一个 rsync 用户、服务中会多出一个 RsyncServer的服务(注意:如果两者都没有,可能是没有用管理员模式运行安装软件的缘故,如果也用了但是没有生成用户和服务,那么请手动创建系统用户,账户和密码同步骤(1)的要保持一致)

 (4)将 RsyncServer 服务的启动类型改为自动并启动服务

(5)新建一个数据同步目录data(自己定义及选择位置)

 (6)将目录权限提供给rsync用户

(7)编辑配置文件:C:\Program Files (x86)\ICW\rsyncd.conf 内容如下

(8)编辑密码文件:C:\Program Files (x86)\ICW\etc\rsyncd.secrets

(9)重启 rsyncd 服务

(10)关闭防火墙或开启rsync默认端口 tcp:873(因为配置文件没有配置服务端口,所以要开放默认的端口)

2.3.2 windows 客户端

        Windows 客户端:192.168.0.165

(1)在 windows 客户端测试机上进行测试

#测试传输数据
C:\soft\cwRsync_5.4.1_x86_Free>.\rsync.exe -avzP --password-file=passwd.txt windows.log test@192.168.0.163::proname
sending incremental file list
windows.log
          5,291 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)

sent 2,457 bytes  received 34 bytes  383.23 bytes/sec
total size is 5,291  speedup is 2.12

(2)在服务端数据目录查看

 2.3.3 linux 客户端

        Linux 客户端:192.168.0.164

(1)在 linux 客户端测试机上进行测试

#测试传输数据
[root@rsync164 ~]# rsync -avz --password-file /etc/rsync.pass linux.log test@192.168.0.163::proname
sending incremental file list
linux.log

sent 512 bytes  received 34 bytes  99.27 bytes/sec
total size is 712  speedup is 1.30

(2)在服务端数据目录查看

2.4 几个常见的错误点

#日志 /var/log/rsyncd.log

#错误一:
auth failed on module proname from WIN-NEQ2FNHO1US (192.168.0.165) for root: no secrets file
# 错误一重点查看 /etc/rsyncd.conf 配置是否有问题,配置中的路径文件是否存在,权限是否正确,比如 /etc/rsyncd.passwd 文件的权限是 600;又比如


#错误二:
auth failed on module proname from WIN-NEQ2FNHO1US (192.168.0.165) for test: no matching rule
#错误二通常是由于客户端配置的密码和服务端配置的密码不一致导致,又或者服务端不存在该用户(用户一定要存在)


#错误三:
ERROR: password file must not be other-accessible
#错误三通常是客户端报出来的错误,即 linux 客户端 的 passwd 文件权限要修改为 600

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/15995.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python每日一练(20230502)

目录 1. 被围绕的区域 🌟🌟 2. 两数之和 II 🌟 3. 二叉树展开为链表 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1…

react native ios 添加启动页 xcode14 react-native-splash-screen

最近更新xcode,有些配置有些不同,网上查的方法都是过时的,导致配了一段时间卡在这里,最后访问官网才弄好了,所以以后解决问题的办法先看官网再查其他各路神仙的办法。 官网的步骤:https://github.com/crazy…

颜色空间转换RGB-YCbCr

颜色空间 颜色空间(Color Space)是描述颜色的一种方式,它是一个由数学模型表示的三维空间,通常用于将数字表示的颜色转换成可见的颜色。颜色空间的不同取决于所选的坐标轴和原点,以及用于表示颜色的色彩模型。在计算机…

【C++入门】一篇搞懂auto关键字

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】 目录 作用不那么大的场景auto真正的价值auto和指针结合使用注意点auto不能推导的场景范围for范围for的使用条件 作用不那么大的…

海尔牵头IEEE P2786国际标准通过Sponsor投票并连任工作组主席

01 海尔牵头IEEE P2786国际标准 通过Sponsor投票 并连任工作组主席 海尔牵头制定的全球首个服装物联网国际标准IEEE P2786《Standard for General Requirements and Interoperability for Internet of Clothing》通过Sponsor投票,标志着该国际标准草案得到了行业…

2.6 浮点运算方法和浮点运算器

学习目标: 以下是一些具体的学习目标: 理解浮点数的基本概念和表示方法,包括符号位、指数和尾数。学习浮点数的运算规则和舍入规则,包括加、减、乘、除、开方等。了解浮点数的常见问题和误差,例如舍入误差、溢出、下…

FPGA实现10G万兆网UDP通信 10G Ethernet Subsystem替代网络PHY芯片 提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、详细设计方案传统 FPGA UDP 方案本 FPGA 10G UDP 方案(牛逼)10G Ethernet 框图10G Ethernet 发送解析10G Ethernet 接收解析10G Ethernet 寄存器配置10G Ethernet UI 配置 4、vivado工程详解5、上板调试验证并演示ping功能测试数据收发测…

一款支持全文检索、工作流审批、知识图谱的企事业知识库

一、项目介绍 一款全源码,可二开,可基于云部署、私有部署的企业级知识库云平台,一款让企业知识变为实打实的数字财富的系统,应用在需要进行文档整理、分类、归集、检索、分析的场景。 获取方式q:262086839 为什么建立知识库平台&…

perf record对C++程序耗时进行分析

本节将介绍如何使用perf工具的perf record对C代码进行性能分析,一切操作都是在ubuntu 20下进行。 perf工具安装 由于perf工具和内核版本有关,因此直接安装容易出错,建议直接通过如下指令安装: sudo apt-get install linux-tool…

00后卷王的自述,我难道真的很卷?

前言 前段时间去面试了一个公司,成功拿到了offer,薪资也从12k涨到了18k,对于工作都还没两年的我来说,还是比较满意的,毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王,感觉自己年轻&#xff…

独立IP服务器和共享IP服务器有什么区别

在选择一个合适的服务器时,最常见的选择是共享IP服务器和独立IP服务器。尽管两者看起来很相似,但它们有着很大的不同。本文将详细介绍共享IP服务器和独立IP服务器的不同之处,以及如何选择适合您需求的服务器。 一、什么是共享IP服务器? 共享…

Python探索性P图,四种增强方式快速玩转pillow库

嗨害大家好鸭!我是爱摸鱼的芝士❤ 我们平时使用一些图像处理软件时, 经常会看到其对图像的亮度、对比度、色度或者锐度进行调整。 你是不是觉得这种技术的底层实现很高大上? 其实最基础的实现原理, 用 Python 实现只需要几行…

Java JDK下载安装环境变量配置

目录 一、下载安装 1.简介 2.JDK下载JDK 官网海外历史地址: 3.安装 二、环境变量配置 1.新建JAVA_HOME变量 2.PATH变量 3.CLASSPATH 变量 4.测试是否安装成功 一、下载安装 1.简介 JDK 是SUN公司提供的一套Java 语言的软件开发工具包,简称JDK(JavaDevelo…

如何编写高质量代码

如何编写高质量代码 1. 前言2. 明确业务场景和用户需求3. 编程实践技巧3.1 提高命名规范3.2 保持代码简洁3.3 好的注释 4. 软件测试5. 总结 1. 前言 现代软件开发中,代码是构建高质量软件的核心。高质量代码能够提高软件系统的可靠性、可维护性和可扩展性&#xff…

给失业的互联网人一个思路:别再苦苦找工作了,要去找门槛低、现金流好、天花板低、资本看不上的创业项目,一年也能几百万!...

失业大潮中的互联网人该何去何从?这大概是许多人在难捱的深夜反复思考的问题。 一位失业很久的网友就在痛苦思索中悟出了适合自己的道路,下面分享给大家,篇幅太长,小编给大家划一下重点。 先说结论:失业的互联网人别再…

浅谈软件测试工程师的技能树

软件测试工程师是一个历史很悠久的职位,可以说从有软件开发这个行业以来,就开始有了软件测试工程师的角色。随着时代的发展,软件测试工程师的角色和职责也在悄然发生着变化,从一开始单纯的在瀑布式开发流程中担任测试阶段的执行者…

优思学院:什么是快速改善方法(Kaizen Blitz)?

什么是快速改善方法(Kaizen Blitz)? Kaizen blitz是精益管理中的一种方法,指通过集中一段时间内的团队努力来实现快速改进的方法。 Kaizen是一个日语词汇,意为“改善”,是一种广泛应用于企业管理的哲学&a…

明确自动化测试目的

明确自动化测试目的 1.提高测试人员的工作成就感和幸福感,减少手工测试中重复性的工作 目前,在大部分中小企业中,手工测试在日常测试工作占据的比例很大。测试人员必须跟随开发团队不断地进行选代式开发和测试。一个功能模块可能在整个测试周…

SEO机制算是让我玩明白了

获取当前时间时间戳,返回遵循ISO 8601扩展格式的日期 new Date(Date.now()).toISOString() 使用moment库转换回来 this.moment(new Date(Date.now()).toISOString()).format("YYYY-MM-DD") js去掉富文本中html标签和图片 filterHtmlTag(val) {if(!val){…

vue性能优化之虚拟列表滚动

一、前言 前端的性能瓶颈那就是页面的卡顿,当然这种页面的卡顿包含了多种原因。 例如HTTP请求过多导致数据加载变慢,下载的静态文件非常大导致页面加载时间很长,js中一些算法响应的时间过长等。很多前端工程师都花费很多的精力在dom渲染上来…