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 的功能特性
- 支持复制拷贝普通文件与特殊文件,如链接文件,设备文件等。
- 支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
- 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。
- 可实现增量复制,既只复制发生变化的数据,因此数据传输效率很高。
- 可以通过socket(进程方式)传输文件和数据(服务端和客户端)。
- 支持匿名或认证(无需系统用户)进程模式传输,安全的进行数据备份及镜像
1.4 Rsync 增量复制原理
默认情况下,在备份复制数据时,Rsync通过其独特的quick check算法,仅复制大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化复制,但需要指定相应的参数,甚至可以实现只复制一个文件里有变化的部分内容,所以可以实现快速地备份复制数据,即采用增量复制方法对数据信息进行复制,与传统cp、scp复制工具的全量复制截然不同,增量复制数据在效率上远远高于全量复制。

- 在
CentOS 5系统上,Rsync软件版本默认为2.x,同步增量复制数据原理是把所有的文件比对一遍,然后再进行数据同步。- 在
CentOS 6和CentOS 7系统上,Rysnc软件版本默认为3.x,增量复制数据的原理是一边比对差异,一边对差异的数据部分进行复制。从增量复制数据的效率上而言,Rsync 3.x版本比Rsync 2.x更有优势一些。
可以利用rsync命令参数查看当前系统中Rsync软件版本信息。
# 查看rsync版本命令
[root@backup ~]# rsync --version
1.5 生产场景架构集群备份方案
- 借助
cron + rsync把所有客户服务器数据同步到备份服务器。 - 针对公司重要数据备份混乱状况,向上提出备份全网数据的解决方案。
- 通过本地打包备份,然后
rsync结合inotify应用把全网数统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果。 - 定期将IDC机房的数据备份公司的内部服务器,防止机房地震及火灾问题导致数据丢失。
- 实时同步,解决存储服务器等的单点问题。
2. Rsync工作方式介绍与实践
Rsync有3种传输数据模式,具体介绍如下。
本地(Local)数据传输模式
Rsync的本地数据传输模式,很类似于cp本地复制命令,可以实现文件、目录的移动备份等功能,所不同的是Rsync有增量复制的功能。远程Shell数据传输模式
远程Shell数据传输模式一般是借助通道(如SSH)在两台服务器之间进行复制数据,这两台服务器之间是对等的,没有客户端与服务端之分,整个过程类似于scp远程复制命令,所不同的是Rsync有增量复制的功能,但缺少scp 的加密复制的功能。守护进程(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的数据同步模式:
- 推: 所有主机推送本地数据至Rsync备份服务器,会导致数据同步缓慢(适合少量数据备份)
- 拉: rsync备份服务端拉取所有主机上的数据,会导致备份服务器开销大
- **大量服务器备份场景:**分支备份服务器和客户端之间,使用客户端推送数据到分支备份的方式(上传模式);主备份服务器和分支服务器之间,使用主备拉取分备的数据的方式(下载模式)。
- 异地备份实现思路
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进行推送同步。
问题:
- 采用远程Shell数据传输模式,每次都需要输入远程主机密码信息,无法实现免交互;因此需要配合SSH key免密码登录来完成数据免交互同步。
- 该复制使用系统用户进行存在安全隐患,而使用普通用户进行又会导致权限不足。
- 实际工作中守护进程传输方式是更重要的方式。
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 | 用途 |
|---|---|---|---|
| nfs01 | 10.0.0.31/24 | 172.16.1.31/24 | nfs存储服务器(客户端) |
| backup | 10.0.0.41/24 | 172.16.1.41/24 | rsync备份服务器(服务端) |
- 第二步:具体需求
要求在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 = rsync | Rsync服务用户,默认为nobody,用 Rsync虚拟用户管理备份目录(可自定义) |
| gid = rsync | Rsync服务用户组,默认为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.pid | Rsync 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 allow和hosts 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 2月 8 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 4月 15 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服务器端排错思路
- 查看Rsync服务配置文件路径是否正确,正确的默认路径为:
/etc/rsyncd.conf。 - 查看配置文件里
host allow、host deny,允许的IP网段是否是允许客户端访问的IP网段。 - 查看配置文件中path参数里的路径是否存在、权限是否正确(正常应为配置文件中的UID参数对应的属主和组)。
- 查看Rsync服务是否启动(查看命令为:
ps -ef/grep rsync)、端口是否存在(查看命令为:netstat -Int/grep 873)。 - 查看Iptables防火墙和SELinux是否开启允许 Rsync服务通过,也可考虑将其关闭。
- 查看服务器端Rsync配置的密码文件是否为600的权限、密码文件格式是否正确(正确格式:用户名:密码),文件路径和配置文件里的 secrect files参数对应。
- 如果是推送数据,要查看配置文件 rsyncd.conf中用户是否对模块下目录有可读写的权限。
3.2 Rsync客户端排错思路
- 查看客户端Rsync配置的密码文件是否为600的权限、密码文件格式是否正确。
- 用telnet连接Rsync服务器IP地址873端口,查看服务是否启动。
- 客户端执行命令时,语法格式书写不正确,此命令的细节要记清楚。
相关文章:
Rsync数据复制/备份服务应用
文章目录 1. rsync概述1.1 什么是Rsync1.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 远程…...
如何为自己的跨境网站添加多国语言翻译功能及推荐起尔网定制与插件开发
如何为自己的跨境网站添加多国语言翻译功能及推荐起尔网定制与插件开发 在全球化的浪潮下,跨境电商成为越来越多企业拓展国际市场的重要途径。然而,语言障碍成为了一个不可忽视的问题。为了更好地服务全球用户,为自己的跨境网站添加多国语言…...
安全见闻(3)——开阔眼界,不做井底之蛙
内容预览 ≧∀≦ゞ 安全见闻三:脚本程序与病毒声明导语脚本语言BAT/PowerShell脚本木马与宏病毒脚本病毒BIOS病毒 结语 安全见闻三:脚本程序与病毒 声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只…...
MySQL 的意向锁(Intention Locks)原理详解
1. 背景:为什么需要意向锁? MySQL 中意向锁的主要作用是用于支持行级锁与表级锁的并存,特别是在 InnoDB 存储引擎中。InnoDB 提供了行级锁,而在某些场景下,数据库系统仍需要对整张表加锁,例如 LOCK TABLES …...
31个省份农业科技水平(农业技术创新或农业科技专利数据)2010-2022年
一、测算方式:参考C刊《湖北大学学报(哲学社会科学版)》张金鑫(2020)老师的做法,采用农业( 农林牧渔业) 三类专利总和来衡量农业技术创新 二、资料范围:31个省份,403个观测值,已经整理成面板数…...
Python代码执行失败问题及解决方案
目录 一、Python代码执行失败的原因 二、常见的Python错误类型 1. 语法错误(SyntaxError) 2. 运行时错误(RuntimeError) 3. 类型错误(TypeError) 4. 导入错误(ImportError) 5…...
Java 遗传算法
遗传算法(Genetic Algorithm, GA)是一种基于自然选择和遗传学原理的优化算法,用于求解复杂的搜索和优化问题。在Java中实现遗传算法通常包括以下几个步骤: 初始化种群:生成一组随机解作为初始种群。适应度评估&#x…...
C++ (一) 基础语法
基础语法:C的开胃小菜 欢迎来到C的世界,这里是编程的盛宴,也是逻辑的迷宫。别担心,我们不会一开始就让你啃硬骨头,而是从基础语法开始,让你慢慢品尝编程的美味。准备好了吗?让我们开始这场编程…...
Qt/C++路径轨迹回放/回放每个点信号/回放结束信号/拿到移动的坐标点经纬度
一、前言说明 在使用百度地图的路书功能中,并没有提供移动的信号以及移动结束的信号,但是很多时候都期望拿到移动的哪里了以及移动结束的信号,以便做出对应的处理,比如结束后需要触发一些对应的操作。经过搜索发现很多人都有这个…...
C 语言介绍及操作案例
C 语言是一种广泛使用的通用编程语言,具有高效、灵活和可移植性强等特点。 一、C 语言的基本特点 简洁高效 C 语言语法简洁,表达能力强。它提供了丰富的数据类型和运算符,可以方便地进行各种计算和操作。C 语言的代码执行效率高,能够直接访问硬件资源,适用于对性能要求较…...
Ivanti云服务被攻击事件深度解析:安全策略构建与未来反思
攻击事件背景 近期,威胁情报和研究机构Fortinet FortiGuard Labs发布了一份关于针对IT解决方案提供商Ivanti云服务设备(Ivanti Cloud Services Appliance,CSA)的复杂网络攻击的详细分析。 该攻击被怀疑是由国家级对手发起…...
如何做出正确选择编程语言:关于Delphi 与 C# 编程语言的优缺点对比
概述 为您的项目选择正确的技术可能是一项相当棘手的任务,尤其是当您以前从未需要做出这样的选择时。如今可用的选项范围非常广泛。虽然一些编程语言和工具有着相当悠久的历史,但其他一些则是刚刚开始赢得开发人员青睐的新手。 在这篇博文中࿰…...
39.3K Star,一个现代的数据库ORM工具,专为Node.js和TypeScript设计
大家好,今天给大家分享一个现代的数据库对象关系映射(Object-Relational Mapping,ORM)工具Prisma ORM,它旨在简化数据库操作,提高开发效率,并确保类型安全。 项目介绍 Prisma ORM适用于各种需要…...
Nginx和Mysql的基础命令
1.安装nginx brew install nginx 2.启动nginx brew services start nginx 3.查看nginx文件默认路径 brew info nginx 重装要先关闭nginx 4.nginx.conf 地址 nginx -t 5.nginx重启 brew services restart nginx 6.关闭nginx brew services stop nginx 7.卸载nginx brew uninstal…...
Docker之容器常见操作
docker 命令介绍 docker --help 管理命令: container 管理容器image 管理镜像network 管理网络命令: attach 介入到一个正在运行的容器build 根据 Dockerfile 构建一个镜像commit 根据容器的更改创建一个新的镜像cp 在本地文…...
猜数游戏(Fortran)
背景 学了两个月Fortran还没来一次正式练习 于是—— 代码 program gessnum! implicit none 不取消IN规则。integer::num,areal::Ncall random_seed()call random_number(N)aint(N*10)print*,"请输入您猜的数字:"read(*,*)numdo i1,3if (numa)thenpri…...
代码随想录 -- 贪心 -- 单调递增的数字
738. 单调递增的数字 - 力扣(LeetCode) 思路: 首先将正数n转化为字符串类型;定义一个flag:标记flag以及之后的位数都是9;从后向前遍历字符串n,如果当前的位数小于他上一位,将上一位…...
【小洛的VLOG】Web 服务器高并发压力测试(Reactor模型测试)
目录 引言 工具介绍 环境介绍 测试结果 个人主页:东洛的克莱斯韦克-CSDN博客 引言 大部分的网络通信都是支持TCP/IP协议栈,为了保证通信的可靠性,客户端和服务端之间需要建立链接。服务端能并发处理多少个链接,平均每秒钟能处理…...
Window:下载与安装triton==2.0.0
triton2.0.0谷仓下载 创建python3.10的工作环境: conda create -n anti-dreambooth python3.10然后在下载目录下执行代码: pip install triton-2.0.0-cp310-cp310-win_amd64.whl...
零,报错日志 2002-Can‘t connect to server on‘106.54.209.77‘(1006x)
零,报错日志 2002-Can’t connect to server on’106.54.209.77’(1006x) 今天差点被这个报错给折磨疯掉 尝试一:对腾讯云服务器进行更改 尝试二:针对配置文件处理 step1 //确保注释 /etc/mysql/mysql.conf.d/mysqld.cnf 下# bind-addres…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

