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

news2024/11/25 12:43:55

一、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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL中的锁有哪些,作用是什么?

概述: 锁最要是用来实现MySQL的隔离性。我们都知道事务有四大特性分别是:原子性、一致性、隔离性、持久性,即所说的ACID。 一、什么是ACID 1、原子性:事务中包含有很多操作,这些操作要么全部执行,要么全…

ShareSDK 抖音平台注册

注册开发者账号 进入抖音开放平台 :抖音开放平台 登录/注册账户 进入[控制台] —> [移动应用] —> [认证企业资质] 完成认证后提交 创建应用 进入[控制台] —> [移动应用] —> [创建移动应用] 填写相关信息同意隐私协议后提交 这里必须要填写好自己的…

移动端click事件300ms延迟

文章目录 移动端click事件300ms延迟问题原因解决将click事件放在touchstart或touchend中处理禁止双击缩放 移动端click事件300ms延迟 问题 在移动端中&#xff0c;点击屏幕的按钮会产生200~300ms的延迟响应&#xff0c;会导致用户认为页面卡顿问题。 如下&#xff1a; <…

备战2个月,四轮面试拿下字节offer...

背景 菜 J 一枚&#xff0c;本硕都是计算机&#xff08;普通二本&#xff09;&#xff0c;2021 届应届硕士&#xff0c;软件测试方向。个人也比较喜欢看书&#xff0c;技术书之类的都有看&#xff0c;最后下面也会推荐一些经典书籍。 先说一下春招结果&#xff1a;拿下了四个…

C++11中的线程类

前面介绍的线程是利用了POSIX线程库&#xff0c;这是传统C/C程序员使用线程的方式&#xff0c;而C11提供了语言层面使用线程的方式。 C11新标准中引入了5个头文件来支持多线程编程&#xff0c;分别是atomic、thread、mutex、condition_variable和future。 atomic&#xff1a;该…

spring事物初始化过程分析

1.注入4个bd InfrastructureAdvisorAutoProxyCreator 父类&#xff1a;AbstractAutoProxyCreator BeanFactoryTransactionAttributeSourceAdvisor 父类&#xff1a;Advisor TransactionInterceptor 父类&#xff1a;Advice AnnotationTransact…

SpringBoot整合Druid配置多数据源

目录 1.初始化项目 1.1.初始化工程 1.2.添加依赖 1.3.配置yml文件 1.4.Spring Boot 启动类中添加 MapperScan 注解&#xff0c;扫描 Mapper 文件夹 1.5.配置使用数据源 1.5.1.注解方式 1.5.2.基于AOP手动实现多数据源原生的方式 2.结果展示 Mybatis-Plus:简介 | MyBat…

DGMIL:分布引导的WSI分类多实例学习

文章目录 DGMIL: Distribution Guided Multiple Instance Learning for Whole Slide Image Classification摘要本文方法Cluster-Conditioned Feature Distribution ModelingPseudo Label-Based Feature Space Refinement 实验结果 DGMIL: Distribution Guided Multiple Instanc…

花了几百万,上的软件全成了垃圾,数字化转型不是这么搞的!

企业信息化建设很复杂&#xff0c;不同的行业、业务部门对应的选型、评估方式都是不一样的&#xff0c;如果真有这样一套选型标准的出现&#xff0c;那多半掺水&#xff0c;不可信。 现在市面上比较多且还算通用的&#xff0c;都是从行业角度出发的评判标准&#xff0c;下面给…

记录 docker linux部署jar

第一步 web sso user admin 中yml文件还原到阿里mysql数据库 第二步 各个jar进行打包处理 第三步 正式服务器的Jar备份 第四步 拉取以上jar包 到正式服务器中 第五步 查看 docker images 其中 web_service 1.0.2是上一个版本 上一个版本build 镜像命令是这样的&#xff08;需…

代码评审平台Gerrit安装配置方法介绍

Gerrit是一款开源免费的基于 web 的代码审查工具&#xff0c;是基于 Git 的版本控制系统。在代码入库之前对开发人员的提交进行审阅&#xff0c;检视通过的代码才能提交入库。本文记录如何安装部署gerrit平台。 目录 Gerrit简介环境准备1. 安装Java2. 安装Git3. 安装nginx4. 安…

宝塔面板+悟空CRM功能模块安装搭建部署教程 环境配置

悟空CRM目录结构 wk_modules ├── module – 无代码模块 ├── common – 基础模块 平台使用的主要技术栈 名称 版本 说明 spring-cloud-alibaba 2021.0.4 核心框架 spring-boot 2.6.11 spring版本 mybatis-plus 3.5.2 ORM框架 nacos 2.1.0 注册中心以及配置管理 seata 1.2.…

论文笔记:A Simple Framework for Contrastive Learning of Visual Representations

0 简介 论文&#xff1a;A Simple Framework for Contrastive Learning of Visual Representations 代码&#xff1a;https://github.com/google-research/simclr 发表&#xff1a;2020年发表在ICML会议上 1 核心思想 如何构建对比学习的比较对象&#xff1f;本文按如下方式…

国民技术N32G430开发笔记(8)- 内部Flash的读写操作

N32G430 内部Flash的读写操作 1、主存储区最大为 64KB&#xff0c;也称作主闪存存储器&#xff0c;包含 32 个 Page&#xff0c;用于用户程序的存放和运行&#xff0c;以及数 据存储。 每一页的大小为2K字节 2、IAP 升级我们将64K的flash分区如下&#xff1a; Boot 0x800000…

scanf老是出错?带你详细解决输入缓冲区问题

文章目录 1.前言2.getchar 和 putchar3.缓冲区问题3.1先观察一个代码3.2输入缓冲区3.3清除缓冲区 结尾 1.前言 我们一般在进行输入输出的时候&#xff0c;就会用到 scanf / printf 。并且根据格式指定可以输入输出各种类型的数据。可以输入整形&#xff0c;字符&#xff0c;浮…

【元分析研究方法】学习笔记4.评估研究的质量

评估研究的质量 该步骤的作用该步骤中需要注意的问题该步骤中知识点1&#xff1a;判断编码的分类方式该步骤中知识点2&#xff1a;统计识别异常值 参考来源&#xff1a;库珀 (Cooper, H. M. )., 李超平, & 张昱城. (2020). 元分析研究方法: A step-by step approach. 中国人…

SpringBoot的事务与锁

在一人一单问题里&#xff0c;为什么加了事务还是会出现一人下多单呢&#xff1f; 本质的原因是&#xff0c;我们使用Java的对象锁&#xff0c;可以保证临界区只有一个线程访问&#xff0c;但是这和SpringBoot里加Transactional注解不是等价的。数据库里的事务保证的是要么全部…

ChatGPT+Word的智能化文字生成和应用

在Word中引入OpenAI代码需要使用VBA编辑器。以下是在Word中引入OpenAI代码的步骤&#xff1a; 打开Word文档&#xff0c;按下Alt F11键打开VBA编辑器。 在VBA编辑器中&#xff0c;选择“插入”菜单&#xff0c;然后选择“模块”。 在新建的模块中&#xff0c;将OpenAI代码粘…

【教学类-35-01】(256*256*256)RGB色卡图片

作品展示&#xff1a; 背景需求&#xff1a; 甲流传染病&#xff0c;班级来了三位孩子&#xff0c;他们玩折纸的时候讨论&#xff0c; 09号问&#xff1a;“绿色和蓝色混合是什么颜色&#xff1f;” 08号问&#xff1a;“绿色加蓝色加浅蓝合在一起是什么颜色” 17号说&…

逆向学习X64DBG

目标游戏&#xff1a;焰影神兵 目的&#xff1a;更改玩家名称&#xff08;中文名称&#xff09; 使用X64dbg可以快速搜索游戏人名&#xff0c;所以本次逆向使用该工具进行工作。 原来的名字&#xff1a;平家物语 现在我们想改成&#xff1a;源氏物语。所以打开X32/64dbg 附…