Rsync数据复制/备份服务应用

文章目录

  • 1. rsync概述
    • 1.1 什么是Rsync
    • 1.2 rsync的功能
    • 1.3 rsync 的功能特性
    • 1.4 Rsync 增量复制原理
    • 1.5 生产场景架构集群备份方案
  • 2. Rsync工作方式介绍与实践
    • 2.1 本地数据传输模式
      • 2.1.1 本地数据传输模式语法
      • 2.1.2 本地数据传输模式实践
    • 2.2 远程Shell 数据传输模式
      • 2.2.1 远程Shell数据传输模式语法
      • 2.2.2 远程Shell 数据传输模式实践
    • 2.3 守护进程传输模式(重要)
      • 2.3.1 守护进程传输模式语法
      • 2.3.2 守护进程传输模式实践(重要)
        • 1)准备环境
        • 2)Rsync服务端部署
        • 3)Rsync客户端部署
        • 4)测试数据备份的效果
    • 2.4 Rsync功能应用拓展
      • 2.4.1 多模块使用
      • 2.4.2 排除指定目录和文件数据复制
      • 2.4.3 无差异数据同步
      • 2.4.4 断点续传和限速
  • 3. Rsync排错
    • 3.1 Rsync服务器端排错思路
    • 3.2 Rsync客户端排错思路


1. rsync概述

1.1 什么是Rsync

Rsync(Remote synchronization)是一款开源的快速的、可实现全量及增量的本地或远程数据备份的多功能优秀工具。在复制时可以不改变原有数据的属性信息,即实现数据的备份迁移特性,适用于Unix/Linux/Windows等多种操作系统平台。
Rsync提供了大量参数来控制复制行为,允许多种灵活的方式来实现文件的传输复制。通过减少网络数据发送数量,只发送源文件和目标文件之间的差异信息,从而实现数据的增量复制。
Rsync被广泛应用于数据备份和镜像,并作为一种改进后的复制命令用于日常系统中。

监听端口:873

官方链接:http://www.samba.org/ftp/rsync/rsync.html

官方手册:man rsync / man rsync.conf

1.2 rsync的功能

​ Rsync具有可使本地远程两台主机之间的数据快速复制、远程备份的功能。

  • 远程复制传输数据:Rsync软件自带的rsync命令本身就可以实现异地主机复制数据,这个功能类似scp命令(借助SSH服务实现远程传输数据),但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝(同样需借助SSH服务传输数据)。此外,Rsync软件还支持以配置守护进程方式实现异机数据复制。
  • Rsync还可以在本地主机的不同分区或目录之间全量及增量复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而Rsync还可以增量拷贝。
  • rsync命令还可以作为删除和查看命令被应用,在某种情况下类似于传统的rm和ls命令。

总体来看,rsync命令可以实现的功能如下:

  • 实现本地数据同步复制(本地工作模式 ,相当于cp命令)
  • 实现远程数据同步复制(远程shell工作模式,相当于scp命令)
  • 实现数据信息删除功能(本地工作模式,相当于rm命令)
  • 实现数据信息查看功能(本地或远程工作模式,相当于ls命令)

rsync在数据同步复制方面类似cp和scp,而且优于cp和scp。因为cp与scp仅仅支持全量拷贝,而rsync还支持增量拷贝。

1.3 rsync 的功能特性

  1. 支持复制拷贝普通文件与特殊文件,如链接文件,设备文件等。
  2. 支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
  3. 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。
  4. 可实现增量复制,既只复制发生变化的数据,因此数据传输效率很高。
  5. 可以通过socket(进程方式)传输文件和数据(服务端和客户端)。
  6. 支持匿名或认证(无需系统用户)进程模式传输,安全的进行数据备份及镜像

1.4 Rsync 增量复制原理

默认情况下,在备份复制数据时,Rsync通过其独特的quick check算法,仅复制大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化复制,但需要指定相应的参数,甚至可以实现只复制一个文件里有变化的部分内容,所以可以实现快速地备份复制数据,即采用增量复制方法对数据信息进行复制,与传统cp、scp复制工具的全量复制截然不同,增量复制数据在效率上远远高于全量复制。
在这里插入图片描述

  • CentOS 5系统上,Rsync软件版本默认为2.x,同步增量复制数据原理是把所有的文件比对一遍,然后再进行数据同步。
  • CentOS 6CentOS 7系统上,Rysnc软件版本默认为3.x,增量复制数据的原理是一边比对差异,一边对差异的数据部分进行复制。从增量复制数据的效率上而言,Rsync 3.x版本比Rsync 2.x更有优势一些。

可以利用rsync命令参数查看当前系统中Rsync软件版本信息。

# 查看rsync版本命令 
[root@backup ~]#  rsync --version

1.5 生产场景架构集群备份方案

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

2. Rsync工作方式介绍与实践

Rsync有3种传输数据模式,具体介绍如下。

  1. 本地(Local)数据传输模式
    Rsync的本地数据传输模式,很类似于cp本地复制命令,可以实现文件、目录的移动备份等功能,所不同的是Rsync有增量复制的功能。

  2. 远程Shell数据传输模式
    远程Shell数据传输模式一般是借助通道(如SSH)在两台服务器之间进行复制数据,这两台服务器之间是对等的,没有客户端与服务端之分,整个过程类似于scp远程复制命令,所不同的是Rsync有增量复制的功能,但缺少scp 的加密复制的功能。

  3. 守护进程(Daemon)传输模式
    守护进程传输模式是在客户端与服务端之间进行数据复制的,通常需要服务端部署守护进程服务,然后在客户端执行命令,实现数据的拉取和推送复制。


以上几种 Rsync的工作方式,可以通过man rsync帮助或者查看官方手册获得。下面分别对上面3种模式进行详细说明,帮助初学者掌握Rsync软件工具的应用。

  • Rsync常用命令参数列表
命令参数参数说明
-v,–verbose详细模式输出,传输时的进度等信息
-z,–compress传输时进行压缩以提高传输效率,–compress-level=NUM可按级别压缩。局域网可以不用压缩
-a,–archive归档模式,表示以递归方式传输文件,并保持所有文件属,,等于-rtopgDl
-r, --recursive(归类于-a参数)对子目录以递归模式传输,即目录下的所有目录都同样传输
-t,–times(归类于-a参数)保持文件时间信息
-o,–owner(归类于-a参数)保持文件属主信息
-p,–perms(归类于-a参数)保持文件权限
-g,–group(归类于-a参数)保持文件属组信息
-P,–progress显示同步的过程及传输时的进度等信息
-D,–devices(归类于-a参数)保持设备文件信息
-l,–links(归类于-a参数)保留软链接(小写字母l)
-e,–rsh=COMMAND使用的信道协议,指定替代rsh的Shell程序。例如:ssh
-L保留软连接指向的目标文件
–exclude=PATTERN指定排除不需要传输的文件信息(和 tar参数一样)
–exclude-from=file文件名所在的目录文件,即可以实现排除多个文件(和 tar参数一样)
–bwlimit=RATE限速功能单位是KB/S
防止在做数据同步时,带宽占满,导致用户无法访问网站
–partial断点续传
–password-file=xxx使用密码文件
–delete让目标目录SRC和源目录数据DST一致,即无差异同步数据

Rync的数据同步模式:

  1. 推: 所有主机推送本地数据至Rsync备份服务器,会导致数据同步缓慢(适合少量数据备份)
  2. 拉: rsync备份服务端拉取所有主机上的数据,会导致备份服务器开销大
  3. **大量服务器备份场景:**分支备份服务器和客户端之间,使用客户端推送数据到分支备份的方式(上传模式);主备份服务器和分支服务器之间,使用主备拉取分备的数据的方式(下载模式)。
  4. 异地备份实现思路

2.1 本地数据传输模式

2.1.1 本地数据传输模式语法

# rsync	      [OPTION...]	      SRC...	    [DEST] 
# rsync命令	   参数选项	       [源目录或文件]	  目的目录或文件  rsync       -avz              复制的内容      复制到哪里去

2.1.2 本地数据传输模式实践

  • 作为本地复制命令应用(类似cp命令)
# 实例一:利用rsync命令实现本地文件的复制,命令如下。[rootbackup-]# cd /tmp/
[root@backup tmp]# 1s
[root@backup tmp]# rsync /etc/hosts /tmp/      #<==实现hosts文件本地复制。
[root@backup tmp]# 1s
hosts
# 说明:根据以上操作信息,实现了本地拷贝文件操作。
========================================================================
# 实例二:利用rsync命令实现复制本地目录,命令如下。
[root@backup tmp]# mkdir /ceshi_dir -P                  #<==创建测试目录。
[root@backup tmp]# touch /ceshi_dir/file{1..5}.txt      #<==在测试目录中,创建5个测试文件。
[root@backup tmp]#ls /ceshi_dir/
file1.txt file2.txt file3.txt file4.txt file5.txt
[root@backup tmp]# rsync /ceshi_dir / tmp/              #<==直接复制目录会显示报错信息。
skipping directory ceshi_dir
[root@backup tmp]# rsync -r /ceshi_dir /tmp/           #<==复制目录需要加入-r 参数。
[root@backup tmp]#1s
hosts ceshi_dir                                         #<==本地目录复制成功。
[root@backup tmp] # ls ceshi_dir/
filel.txt file2.txt file3.txt file4.txt file5.txt        #<==测试目录中数据也复制成功。#说明:根据以上操作信息,实现了本地拷贝目录操作。
  • 作为删除数据命令应用(类似rm命令)
# 实例一:利用rsync命令的删除功能清空文件夹内容,命令如下。
[root@backup tmp]# mkdir /opt /null -p                     #<==创建一个空目录。
[root@backup tmp]# rsync -r --delete /opt/null/ /tmp/      #<=清除/tmp 下所有内容。
[root@backup tmp]# ls                                      #<==已删除。# 说明:利用上面所学的本地复制命令结合删除功能参数--delete,对tmp目录进行清除。
# 提示:在使用--delete删除功能参数时,必须结合-r或-d参数使用。
============================================================================
# 实例二:利用rsync命令的删除功能清空文件内容,命令如下。
[root@backup tmp]# echo "www.baidu .com" >file1.txt     #<==生成测试文件。
[root@backup tmp]# cat file1 .txt
www.baidu.com
[root@backup tmp]# touch null.txt                           
#<==创建空文件null.txt,利用空文件实现对相应file1.txt 文件内容的清除
[root@backup tmp]# rsync -r --delete /tmp/null.txt file1.txt     
#<==利用rsync命令删除功能实现对文件数据信息清除。
[root@backup tmp] #cat file1.txt
#<==数据信息已清除

提示:在使用rsync命令对目录数据进行本地或远程复制时,目录名称后面是否加“/”,产生的复制效果是不一样的。

  • 目录后面不加“/”,会将/ceshi_dir目录及目录下面的文件内容一并复制到 tmp目录中;
  • 目录后面加“/”,会将/ceshi_dir目录下面的文件内容复制到 tmp目录中,但ceshi_dir目录本身没有被复制。
  • 作为查询数据命令应用(类似ls命令)
# 实例:利用rsync命令的查询功能查看文件和目录信息
[root@backup tmp]# rsync /etc/hosts              #<==查询文件信息。
-rw-r--r--     332    2019/04/10 22:07:43 hosts
[root@backup tmp]# rsync /etc
drwxr-xr-x   8,192    2019/04/11 20:42:54 etc    #<==查询目录信息。

2.2 远程Shell 数据传输模式

2.2.1 远程Shell数据传输模式语法

​远程Shell数据传输模式分为拉取推送两种模式。

  • 拉取是指从远端服务器把数据拉取到本地服务器;
  • 推送是指把数据从本地服务器推送到远端服务器,这两种传输方式的语法格式如下。
## 拉取(pull)   从远端拉取到本地
rsync  [OPTION...]  [USER@]HOST:SRC...              [DEST]    命令      参数      [认证用户]@[主机地址]:[源路径]       本地路径 
rsync     -avz      root@10.0.0.41:/etc/passwd       /opt/      # 下载模式 pull## 推送(push)   从本地推到远端
rsync  [OPTION...]   SRC...    [USER@]HOST:[DEST]               命令      参数      本地路径     [认证用户]@[主机地址]:[目标路径] 
rsync     -avz       1.txt      root@10.0.0.41:/root/            # 上传模式 push

根据以上语法格式信息画图对推拉概念进行说明:
在这里插入图片描述

2.2.2 远程Shell 数据传输模式实践

  • 利用拉取模式从远端服务器把/etc/hosts复制到本地/tmp。具体实现过程如下:
[root@nfs01 ~]# rsync -av -e 'ssh -p 22' root@172.16.1.41:/etc/hosts /tmp
# <==借助-e参数指定数据传输方式为ssh隧道加密传输,/tmp目录为当前命令行的本地目录。
# <==如果ssh端口是默认的22,命令中的-e 'ssh -p 22’部分可以省略。
Are you sure you want to continue connecting (yes/no) ? yes  # <==首次需输入yes.
Warning: Permanently added '172.16.1.41' (ECDSA) to the list of known hosts.root@172.16.1.41's password: 
# <==输入41服务器的root密码。
receiving incremental file list
hosts
sent 43 bytes received 243 bytes 44.00 bytes/sec
total size is 158speedup is 0.55

说明:利用nfs01作为参照服务器,将远程服务器172.16.1.41上的数据进行拉取同步。

  • 利用推送模式从本地服务器把/etc/hosts复制到远端主机的/tmp。具体实现过程如下:
[root@nfs01 ~]# rsync -av /etc/hosts root@172.16.1.41:/tmp
# <==省略-e参数,/tmp目录为远程服务器的目录,/etc/hosts为本地文件。
root@172.16.1.41's password:
# <==输入nfs01服务器的root密码。
sending incremental file list
hosts
sent 243 bytes received 35 bytes 61.78 bytes/sec
total size is 158 speedup is 0.57

说明:利用服务器nfs01作为参照服务器,将本地服务器nfs01上的数据向远程服务器172.16.1.41进行推送同步。

问题:

  1. 采用远程Shell数据传输模式,每次都需要输入远程主机密码信息,无法实现免交互;因此需要配合SSH key免密码登录来完成数据免交互同步。
  2. 该复制使用系统用户进行存在安全隐患,而使用普通用户进行又会导致权限不足。
  3. 实际工作中守护进程传输方式是更重要的方式。

2.3 守护进程传输模式(重要)

2.3.1 守护进程传输模式语法

​守护进程传输模式是在客户端与服务端之间进行数据复制的,通常需要服务端部署守护进程服务,然后在客户端执行命令,实现数据的拉取和推送复制,即把数据推送到服务器端,或者从服务器端把数据拉取到本地客户端,这两种传输方式的客户端命令又有不同的语法格式,具体说明如下。

## 拉取模式的两种语法格式说明
# 方式一:推荐
rsync  [OPTION...]  [USER@]HOST::SRC...                     [DEST]    
rsync     -avz      匿名活用户@服务端IP::模块名称/file            .命令      参数      [认证用户]@[主机地址]::[远端模块名]         目的路径 
# 方式二:
rsync  [OPTION...]  rsync://[USER@]HOST[:PORT]/SRC                     [DEST]    命令      参数      rsync://[认证用户]@[主机地址][端口]/[远端模块名]         目的路径 ## 推送模式的两种语法格式说明
# 方式一:推荐
rsync  [OPTION...]   SRC...    [USER@]HOST::[DEST]    
rsync     -avz        file     匿名活用户@服务端IP::模块名称命令      参数       源路径    [认证用户]@[主机地址]::[远端模块名] 
# 方法二:
rsync  [OPTION...]   SRC...    rsync://[USER@]HOST[:PORT]/[DEST]               命令      参数        源路径    rsync://[认证用户]@[主机地址][端口]/[远端模块名] 

​通过对守护进程传输语法的介绍,可以看出其应用方法与远程Shell传输模式类似,但是如果想采用守护进程传输模式进行实际复制传输数据,还必须要额外部署 RsyncDaemon 服务 才行,下面会对守护进程传输模式的部署过程进行说明。

2.3.2 守护进程传输模式实践(重要)

1)准备环境
  • 第一步:部署环境准备

查看系统相关信息

[root@backup ~]# cat /etc/redhat-release           # 操作系统信息
CentOS Linux release 7.8.2003 (Core)
[root@backup ~]# uname -r                          # 查看内核信息
3.10.0-1127.el7.x86_64
[root@backup ~]# uname -m                          # 查看系统是什么系统
x86_64
[root@backup ~]# rpm -qa rsync                     # rsync 软件信息
rsync-3.1.2-10.el7.x86_64 # 如果没有安装的话
[root@backup ~]# yum install rsync

Rsync守护进程模式网络拓扑地址规划表

主机名网卡eth0网卡eth1用途
nfs0110.0.0.31/24172.16.1.31/24nfs存储服务器(客户端)
backup10.0.0.41/24172.16.1.41/24rsync备份服务器(服务端)
  • 第二步:具体需求

​ 要求在Rsync备份服务器(BACKUP)上以rsync守护进程的方式部署Rsync服务,使得所有Rsync节点客户端主机,可以把本地数据通过rsync命令的方式备份数据到数据备份服务器Rsync服务器上。

  • 第三步:备份数据架构拓扑

​ 参照下图进行 Rsync守护进程模式 服务器架构部署搭建,并且以远程数据同步方式由客户端节点向服务端推送数据。
在这里插入图片描述

2)Rsync服务端部署
  • Rsync 守护进程操作步骤说明
操作步骤Rsync服务端搭建步骤
第一步确认是否有 Rsync程序 是否存在:rpm -qa rsync
第二步创建 Rsync 配置文件,并对配置文件内容信息进行编辑
第三步创建负责管理 Rsync 服务的虚拟用户
第四步创建 Rsync 服务备份数据的目录,并进行相应的授权,可以让虚拟用户管理
第五步配置 Rsync 服务安全相关密钥文件,并且授权密钥文件为 600 权限
第六步启动 Rsync 服务,使之可以提供服务
第七步设置 Rsync 服务开机自动运行
  • 配置 rsyncd.conf配置文件

提示:Rsync守护进程模式服务需要部署在BACKUP服务器上

先备份配置文件,这个配置文件CentOS 7自带,但是CentOS 6需要进行创建编辑。

cat>/etc/rsyncd.conf<<EOF
#rsync_config_______________start
uid = rsync                             
gid = rsync 
port = 873
use chroot = no    
fake super = yes                  
max connections = 200            
timeout = 600                    
pid file = /var/run/rsyncd.pid   
lock file = /var/run/rsync.lock  
log file = /var/log/rsyncd.log  
ignore errors                    
read only = false               
list = false                    
hosts allow = 172.16.1.0/24    
# hosts deny = 0.0.0.0/32        
auth users = rsync_backup       
secrets file = /etc/rsync.password  [backup]   
comment = welcome to backup!   
path = /backup/      
EOF
  • 配置文件参数说明:
rsyncd.conf 的参数参数说明
uid = rsyncRsync服务用户,默认为nobody,用 Rsync虚拟用户管理备份目录(可自定义)
gid = rsyncRsync服务用户组,默认为nobody,用管理备份目录(可自定义)
port = 873服务监听端口
use chroot = no限制推送的数据到某个目录,不允许跳出该目录。
如果为true,会在给客户端传输文件前“chroot to the path”选择确认备份路径。
这是Rsync安全的一个配置,因为我们大多数都是在内网使用Rsync,所以不配也可以。
fake super = yes允许进程不以root身份运行,就可以改变文件属性(CentOS7环境新增此参数)
max connections = 200设置最大连接数,默认为0,意为无限制,负值意为关闭这个模块。
timeout = 600超时时间。默认为0,意为no timeout,建议为300~600 (5~10分钟)
pid file = /var/run/rsyncd.pidRsync Daemon启动后将其进程PID 写入此文件。
如果这个文件已经存在,Rsync进程不会覆盖该文件,而是会终止
lock file = /var/run/rsync.lock指定lock文件用来支持“ max connections”参数,使得总连接数不会超过限制。默认为/var/run/rsyncd.lock
log file = /var/log/rsyncd.log不设或者设置错误,Rsync会使用syslog输出相关日志信息
ignore errors忽略I/O错误信息
read only = false对备份数据可读写
list = false不允许客户端可以查看可用模块列表。默认为可以。如果配置为yes或true,执行 rsync 172.16.1.41::命令都会显示配置的模块信息
hosts allow = 172.16.1.0/24指定可以联系的客户端主机名或和IP地址或地址段,默认情况下没有此参数,即都可以连接。表示配置白名单参数
hosts deny = 0.0.0.0/32指定不可以联系的客户端主机名或和IP地址或地址段,默认情况下没有此参数,即都可以连接。表示配置黑名单参数
auth users = rsync_backup远程虚拟连接用户。指定以空格或逗号分隔的用户可以使用哪些模块,用户不需要在本地系统中存在。
默认所有用户无密码访问(anonymous rsync)(可自定义)
secrets file = /etc/rsync.password指定用户名和密码存放的文件(可自定义),格式为:用户名:密码。权限必须是600
[backup]这里就是模块名称,用于远程访问使用模块名访问。需用中括号括起来,名称没有特殊要求,但最好是有意义的名称,便于以后维护(可自定义)
comment = welcome to backup!模块注释信息
path = /backup在这个模块中,Daemon使用的文件系统或目录,目录的权限要注意和配置文件中的权限保持一致,否则会遇到读写问题。(可自定义)
  • hosts allowhosts deny 不要同时存在,否则可能导致功能不生效。即黑白名单只需要配置一个参数即可。
  • 模块外的参数(模块名之前的参数)是配置的全局参数,所有的都适用,模块名下的参数配置,只有该模块适用。
  • 配置文件中,行后不要有注释和空格
  • 配置用于数据备份的目录

存放数据备份的目录位置,对应模块中的 path = /backup,该目录是自定义目录,需要进行手动创建。

[root@backup ~]# useradd rsync -s /sbin/nologin -M       # 创建管理备份目录的用户
[root@backup ~]# mkdir -p /backup                        # 创建备份目录
[root@backup ~]# chown -R rsync.rsync /backup            # 对创建的目录进行用户和用户组的授权
  • 配置用于Rsync复制的账号、密码及账号文件权限

在Rsync服务端创建用于在Rsync客户端与服务端进行验证的账号和密码,并将其写入文件。

创建服务认证账号和密码文件的命令如下:

[rootebackup ~]# echo "rsync_backup:123456">/etc/rsync.password      #<==将账号和密码写入文件。
[root@backup ~]# chmod 600 /etc/rsync.password                       #<==文件必须为600权限。# 说明:其中rsync_backup:ceshi中的rsync_backup为同步传输用到的虚拟账号,这个账号仅为Rsync服务的认证账号,不需要是系统账号,也不需要创建该账号。后面的123456为密码,不超过8位。账号和密码中间用冒号分隔。

检查认证文件信息的命令如下:

[root@backup ~]# cat /etc/rsync.password            #<==操作完检查是个好习惯。
rsync_backup:123456                                 #<==注意账号密码格式。
[root@backup ~]# ll /etc/rsync.password
-rw------- 1 root root 40 28 23:12 /etc/rsync.password          #<==600权限。
  • 启动Rsync服务以及检查确认

Rsync服务启动、开机自启动及检查等操作过程的命令如下:

# rsync --daemon(c6及以前)
# C7
systemctl start rsyncd     # 启动服务
systemctl enable rsyncd    # 开机自启动
systemctl status rsyncd    # 服务状态[root@backup ~]# ps -ef|grep sync|grep -v grep      # 检查进程
root       7521      1  0 11:39 ?        00:00:00 /usr/bin/rsync --daemon --no-detach[root@backup ~]# netstat -lntup|grep 873            # 检查端口是否处于监听状态
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      7521/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      7521/rsync [root@backup ~]# lsof -i :873                       # 检查端口
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   7521 root    3u  IPv4  41439      0t0  TCP *:rsync (LISTEN)
rsync   7521 root    5u  IPv6  41440      0t0  TCP *:rsync (LISTEN)
3)Rsync客户端部署

Rsync 客户端操作过程如下:

  • 确认是rsync命令是否存在。
  • 创建与Rsync服务端建立连接所需的密码文件,并进行授权,权限为600。

客户端的配置方法可以参考下面两种。

  • 方法一:配置密码文件方式(常用)
# 方法1:认证密码文件
[root@nfs01 ~]# echo "123456" > /etc/rsync.password   # 此处的密码必须与服务端相同。而且客户端密码认证文件里仅配置了密码,不需要账号了。这是与服务端的区别。[root@nfs01 ~]# chmod 600 /etc/rsync.password       # 必须为600权限
[root@nfs01 ~]# cat /etc/rsync.password
123456
[root@nfs01 ~]# ls -l /etc/rsync.password
-rw------- 1 root root 7 415 11:55 /etc/rsync.password
  • 方法二:配置内置变量RSYNC_PASSWORD,脚本中使用
# 方法2:
[root@nfs01 ~]# echo ' export RSYNC_PASSWORD=123456' >>/etc/bashrc    # 配置变量生效
[root@nfs01 ~]# tail -1 /etc/bashrc export RSYNC_PASSWORD=123456
[root@nfs01 ~]# . /etc/bashrc 
[root@nfs01 ~]# echo $RSYNC_PASSWORD
123456
4)测试数据备份的效果
  • 客户端推送到服务器
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
  • 服务端拉取客户端
rsync -avz rsync_backup@172.16.1.41::backup/etc/hosts . --password-file=/etc/rsync.password
  • 将服务器上的11.txt下载到当前目录
rsync -avz rsync_backup@172.16.1.41::backup/ceshi/11.txt .

在模块后面也可以加路径进行备份

rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup/test/

2.4 Rsync功能应用拓展

2.4.1 多模块使用

之前的配置里,配置文件里只是配置了【backup】模块,那么是不是可以再配置另一个模块,换一个指定的文件备份路径。也就是说在服务端配置文件里配置多个模块来进行不同目录的文件备份。

  • 首先需要在配置文件中添加模块配置信息
uid = rsync                             
gid = rsync 
port = 873
use chroot = no    
fake super = yes                  
max connections = 200            
timeout = 600                    
pid file = /var/run/rsyncd.pid   
lock file = /var/run/rsync.lock  
log file = /var/log/rsyncd.log  
ignore errors                    
read only = false               
list = false                    
hosts allow = 172.16.1.0/24    
# hosts deny = 0.0.0.0/32        
auth users = rsync_backup       
secrets file = /etc/rsync.password  [backup]   
comment = welcome to backup!   
path = /backup/ [data]         #<==新模块。
path = /data/  #<==新备份目录。
# 除了增加以上两行命令外,也可以设定更多的独立配置参数,如独立虚拟用户、独立密码文件等。
  • 创建对应目录并进行授权
[root@backup ~]# mkdir -p /data                        # 创建备份目录
[root@backup ~]# chown -R rsync.rsyne /data            # 对创建的目录进行用户和用户组的授权
  • 重启rsync同步服务
[root@backup ~]# systemctl restart rsyncd
  • 客户端测试访问

2.4.2 排除指定目录和文件数据复制

  • 方法1:利用参数进行排除

--exclude=PATTERN:指定排除不需要传输的文件信息(和 tar参数一样)

--exclude-from=file:文件名所在的目录文件,即可以实现排除多个文件(和 tar参数一样)

# 排除单个文件的命令如下:
rsync -avz --exclude=a /backup/ rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password# 排除多个文件的命令如下:
rsync -avz --exclude={a,b} /backup/ rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password
rsync -avz --exclude={a..g} /backup/ rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password
# 从文件中排除文件的命令如下:
rsync -avz --exclude-from=paichu.txt /backup/ rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password
  • 方法2:服务器端配置rsyncd.conf参数实现(不推荐)

在/etc/rsyncd.conf里加排除参数及要排除的文件,但是不推荐在服务器端进行配置,不灵活。

exclude=a c b/2
# 表示排除a,c及b目录的2文件。文件和目录之间用空格隔开,所有目录及文件为相对于模块的目录。

2.4.3 无差异数据同步

所谓无差异同步,就是不管是拉取还是推送,都要保持两边的数据完全一致。

# 以当前的backup为准将数据无差异同步给41/root下
rsync  -avz --delete backup root@10.0.0.41:/root/# 以远端41为准将数据同步给本地的backup目录
rsync  -avz --delete root@10.0.0.41:/root/backup/ backup

注意:无论是拉取还是推送,都是以前面的为准。而且该命令同样非常危险,使用不当会造成远程服务器端目录及文件丢失。因此要特别注意小心使用。

  • 生产场景应用

1. Rsync推送企业工作场景:数据备份、上传。
本地有什么,远端就有什么,本地没有的远端有也要删除,这会造成服务器端的目录数据丢失,备份和上传场景下一般不需要–delete功能,除非是像NFS实时复制数据到备份服务器上必须要保持两边一致的情形。
2. Rsync拉取企业工作场景:代码发布、下载。
远端有什么,本地(客户端)就有什么,远端没有的本地有也要删除。这会造成本地目录数据丢失。适用于无差异复制的两台服务器之间,要求数据必须一致,且实时性又不是很高的情况,如两台负载均衡下面Web服务器之间的同步,或者高可用双机配置之间的同步、NFS 共享数据的实时复制等。Rsync无差异同步非常危险,而且有很多的替代方案,因此,生产场景没有特殊的需求,应避免使用。

2.4.4 断点续传和限速

默认情况下,利用rsync命令进行大文件数据传输时,不加上断点传输参数,在传输中断后,会发现部分传输的数据信息会被删除。加上断点传输参数,在传输中断后,会发现部分传输的数据信息依旧存在。

  • Rsync大文件断点续传相关参数
命令参数参数说明
–partial默认情况下,Rsync如果传输被中断,将删除所有部分传输的文件。在某些情况下,保留部分已经传输的文件是用户所希望的。使用–partial参数告知Rsync保留部分传输过的文件,可以使该文件剩余部分的传输更快速
–partial-dir=DIR保留部分传输文件时,比–partial参数更好的方法是指定一个目录来保存部分数据(而不是将其写入目标文件)。在下一个传输过程中,Rsync将使用这个目录中的文件作为数据,以加快恢复传输的速度,并在它达到目的后将其删除
# 保留已经传输的文件
rsync -avz --partial /backup/ rsync_backup@10.0.0.41::backup# 指定一个目录来保存部分数据
rsync -avz --partial-dir=/tmp/ /backup/ rsync_backup@10.0.0.41::backup
  • rsync命令限速传输
# 限速: --bwlimit
[root@backup ~]# rsync -avzP --bwlimit=2 /tmp/1g 10.0.0.7:/root/
root@10.0.0.7's password: 
sending incremental file list
1g139,493,376   2%    2.01MB/s    0:51:09 

3. Rsync排错

rsync命令行输出日志文件为/var/log/rsyncd.log

3.1 Rsync服务器端排错思路

  1. 查看Rsync服务配置文件路径是否正确,正确的默认路径为:/etc/rsyncd.conf
  2. 查看配置文件里host allowhost deny,允许的IP网段是否是允许客户端访问的IP网段。
  3. 查看配置文件中path参数里的路径是否存在、权限是否正确(正常应为配置文件中的UID参数对应的属主和组)。
  4. 查看Rsync服务是否启动(查看命令为: ps -ef/grep rsync)、端口是否存在(查看命令为:netstat -Int/grep 873)。
  5. 查看Iptables防火墙和SELinux是否开启允许 Rsync服务通过,也可考虑将其关闭。
  6. 查看服务器端Rsync配置的密码文件是否为600的权限、密码文件格式是否正确(正确格式:用户名:密码),文件路径和配置文件里的 secrect files参数对应。
  7. 如果是推送数据,要查看配置文件 rsyncd.conf中用户是否对模块下目录有可读写的权限。

3.2 Rsync客户端排错思路

  1. 查看客户端Rsync配置的密码文件是否为600的权限、密码文件格式是否正确。
  2. 用telnet连接Rsync服务器IP地址873端口,查看服务是否启动。
  3. 客户端执行命令时,语法格式书写不正确,此命令的细节要记清楚。

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

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

相关文章

数据结构练习题5(链表和栈)

1环形链表 II 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测…

全面指南:中国人工智能大模型技术创新与应用

近期&#xff0c;中国人工智能协会发布了《中国人工智能大模型技术白皮书》&#xff0c;涵盖了大模型发展历程、关键技术、困难及挑战以及未来发展的展望。 在此本文总结了下白皮书的主要内容&#xff0c;并附上白皮书~ 目录第 1 章 大模型技术概述 ........................…

基础数据结构——队列(双端队列,优先级队列,阻塞队列)

双端队列、队列、栈对比 定义特点队列一端删除&#xff08;头&#xff09;另一端添加&#xff08;尾&#xff09;First In First Out栈一端删除和添加&#xff08;顶&#xff09;Last In First Out双端队列两端都可以删除、添加优先级队列优先级高者先出队延时队列根据延时时间…

微信小程序地图功能开发:绘制多边形和标记点

在微信小程序中&#xff0c;地图功能是一个常见的需求&#xff0c;尤其是在需要展示地理位置、导航指引或区域覆盖的应用中。本文将通过一个实际的微信小程序地图组件示例&#xff0c;介绍如何在地图上绘制多边形区域和标记点&#xff0c;以及如何响应用户的点击事件。 项目背景…

V2X介绍

文章目录 什么是V2XV2X的发展史早期的DSRC后起之秀C-V2XC-V2X 和DSRC 两者的对比 什么是V2X 所谓V2X&#xff0c;与流行的B2B、B2C如出一辙&#xff0c;意为vehicle to everything&#xff0c;即车对外界的信息交换。车联网通过整合全球定位系统&#xff08;GPS&#xff09;导…

实操 maxkey对接三方文档

实操 maxkey 对接三方文档 概述前置准备&#xff1a;MaxKey 安装与配置&#xff1a;第三方系统准备网络环境 对接三方配置oauth2协议对接导入jar包&#xff08;调接口&#xff09;权限加回调重定向获取token处理业务 api对接三方获取api凭证配置 MaxKey更新代码 概述 最近在搞m…

【华为HCIP实战课程十六】OSPF虚链路Vlink,网络工程师

一、vlink续 区域内部的路由优于区域之间的路由,区域之间优于外部路由,外部路由类型1优于外部类型2 只有同一级别的路由才会对比cost <R3>tracert 11.1.1.1 traceroute to 11.1.1.1(11.1.1.1), max hops: 30 ,packet length: 40,press CTRL_C to break 1 10.1.35.5 …

three融合GIS创建地球模型(二)

创建一个地球模型通常涉及到使用纹理贴图来给球体添加地球表面的图像。在 Three.js 中&#xff0c;你可以通过加载一张地球的图片作为纹理&#xff0c;并将其应用到一个 SphereGeometry 上来实现这一点。以下是如何完成这个过程的一个基本示例&#xff1a; 步骤 1: 设置场景、…

rust入门基础总结

文章目录 前言1、输出格式规范一、占位符相关&#xff08;一&#xff09;{}与{:?} 二、参数替换方式&#xff08;一&#xff09;位置参数&#xff08;二&#xff09;具名参数 三、格式化参数&#xff08;一&#xff09;宽度&#xff08;二&#xff09;对齐&#xff08;三&…

php生成PDF文件(FPDF)

FPDF即“Free PDF”&#xff0c;FPDF类库提供了基本的PDF创建功能&#xff0c;其源代码和使用权是免费的。 PDF格式文档优势 通用&#xff1a;PDF文档在UNIX和Windows系统均可正常使用。 安全&#xff1a;PDF文档可设置为只读模式&#xff0c;并且可以添加密码等保护措施。 美…

【JDK、Maven、Git、PostgreSQL】VSCode后端开发环境配置样例

文章目录 一、文件下载1 Maven早期版本下载安装1.1 文件下载1.2 设置系统变量1.3 查看是否设置成功1.4 设置MAVEN的本地仓库 和 镜像等内容 2 Git 下载安装3 下载并安装PostgreSQL 103.1 下载并安装3.2 配置系统环境变量 4 在VScode中下载扩展包5 在VSCode中为项目配置JDK 二、…

Maven 的使用:在 IDEA 中配置 Maven 的超详细步骤

一、概述 记录时间 [2024-10-20] Maven 用来管理 Java 项目中的依赖。 为什么要进行 Maven 配置呢&#xff1f;IDEA 默认选择内置的 Maven 仓库&#xff0c;但是不好用。 本文所讲述的 Maven 配置可以说是超详细的&#xff01; 从下载 Maven 这个东西开始&#xff0c;修改它…

sql-labs靶场第十七关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、寻找注入点 2、注入数据库 ①寻找注入方法 ②爆库&#xff0c;查看数据库名称 ③爆表&#xff0c;查看security库的所有表 ④爆列&#xff0c;查看users表的所有列 ⑤成功获取用户名…

基于微信小程序的智能校园社区服务推荐系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

华为eNSP:端口安全

一、什么是端口安全 端口安全是指保护计算机端口免受未经授权的访问、攻击或滥用的一种措施。计算机上的每个服务或应用程序都依靠特定的端口进行通信。端口安全的目的是限制对计算机端口的访问&#xff0c;确保只有经过授权的用户或服务可以使用这些端口。通过配置防火墙、访…

影刀RPA实战番外:excel函数应用指南

Excel函数是用于执行特定计算、分析和数据处理任务的预定义公式。它们可处理数学计算、文本处理、逻辑判断、日期和时间运算、查找和引用数据等。例如&#xff0c;SUM函数可以计算一系列数字的总和&#xff0c;IF函数进行逻辑测试&#xff0c;VLOOKUP函数在表格中查找数据&…

基于vue框架的的房屋租借系统6vsj6(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,房东,房源类型,房屋租赁,租赁信息,续租信息,退租信息 开题报告内容 基于Vue框架的的房屋租借系统开题报告 一、选题背景 随着城市化进程的加速和人口流动性的增强&#xff0c;房屋租赁市场日益繁荣&#xff0c;成为满足人们居住…

揭秘 Mark Word 的存储结构

一个Java对象被初始化之后会存储在堆内存中&#xff0c;那么这个对象在堆内存中存储了哪些信 呢? Java 对象存储结构可以分为三个部分:对象头、实例数据、对齐填充。当我们构建一个0b lock new Object() 对象实例时&#xff0c;这个1ock实例最终的存储结构就对应下面…

如何高效集成聚水潭数据至MySQL-技术案例解析

如何高效集成聚水潭数据至MySQL-技术案例解析 聚水潭数据集成到MySQL的技术案例分享 在本次技术案例中&#xff0c;我们将探讨如何通过轻易云数据集成平台&#xff0c;将聚水潭的店铺信息高效地集成到MySQL数据库中。具体方案为“聚水潭-店铺信息查询-->BI崛起-店铺信息表”…

SSL证书有免费的吗?在哪里可以申请到?——附带申请步骤

申请免费的SSL证书通常可以通过以下几个步骤完成&#xff0c;这里以使用JoySSL为例进行说明&#xff0c;因为JoySSL提供了一个免费、自动化和开放的证书颁发机构&#xff08;CA&#xff09;来促进网站从HTTP向HTTPS的转换。 步骤&#xff1a; 选择工具&#xff1a; 访问JoySSL…