iis服务器助手广告
返回顶部
首页 > 资讯 > 服务器 >rsync详解
  • 156
分享到

rsync详解

服务器linux运维 2023-09-27 11:09:24 156人浏览 泡泡鱼
摘要

一、rsync介绍 1、rsync是什么 rsync(remote synchronize)是Liunx/Unix下的一个远程数据同步工具。它可通过LAN/WAN快速同步多台主机间的文件和目录,并适当

一、rsync介绍

1、rsync是什么
rsync(remote synchronize)是Liunx/Unix下的一个远程数据同步工具。它可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync算法(差分编码)以减少数据的传输。rsync算法并不是每一次都整份传输,而是只传输两个文件的不同部分,因此其传输速度相当快。除此之外,rsync可拷贝、显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。
2、rsync的工作原理
a、客户端构造FileList,FileList包含了需要与服务器同步的所有文件信息对name->id(id用来唯一表示文件例如MD5)b、客户端将FileList发送到服务器。c、服务器上rsync处理客户端发过来的FileList,构建新的NewFileList。 其中根据MD5值比较,删除服务器上已经存在的文件信息对,只保留服务器上不存在或变化的文件。d、客户端得到服务器发送过来的NewFileList,然后把NewFileList中的文件重新传输到服务器。
3、rsync优点
1)可以镜像保存整个目录树和文件系统。2)可以很容易做到保持原来文件的权限、时间、软硬连接等。3)无需特殊权限即可安装。4)快速:第一次同步时rsync复制全部内容,但在下一次值传输修改过的内容5)压缩传输:rysnc在传输的过程中可以实行压缩及解压缩操作,可以使用更少的带宽6)安全:可以使用scp、ssh等方式来进行文件传输7)支持匿名传输,以方便进行网站镜像8)rsync不仅可以远程同步数据(类似于scp),而且可以本地同步数据(类似于cp),做差异同步9)openssh 8.0已经把scp标记为过时不建议使用了。建议用sftp或者rsync替代scp# 需要在Liunx/Unix服务器之间互传海量数据时,建议选择rsync进行传输
4、rsync认证方式

rsync有两种常用的认证方式,一种是rsync-daemon方式,另外一种是ssh方式。

在平时使用过程,我们使用最多的是rsync-daemon方式。

注意:在使用rsync时,服务器和客户端都必须安装rsync程序

rsync-daemon 认证

rsync在rsync-daemon认证方式下,默认监听tcp的873端口。rsync-daemon认证方式是rsync的主要认证方式,这个也是我们经常使用的认证方式。并且也只有在此种模式下,rsync才可以把密码写入到一个文件中。注意:rsync-daemon认证方式,需要服务器和客户端都安装rsync服务并且只需要rsync服务器端启动rsync,同时配置rsync配置文件。客户端启动不启动rsync服务,都不影响同步的正常进行。

ssh认证

rsync在ssh认证方式下,可通过系统用户进行认证,即在rsync上通过ssh隧道进行传输,类似于scp工具。此时同步操作不在局限于rsync中定义的同步文件夹。注意:ssh认证方式,不需要服务器和客户端配置rsync配置文件只需要双方都安装rsync服务,并且也不需要双方启动rsync。# 若rsync服务端SSH为标准端口,此时rsync使用方式如下:rsync -avz /root/test root@10.10.10.10:/root/# 若rsync服务端SSH为非标准端口,可通过rsync的-e参数进行端口指定。使用方式如下:rsync -avz /root/test -e 'ssh -p1234' root@10.10.10.10:/root/

二、安装rsync

安装rsync,我们可以分为两种方式:源码方式安装和RPM方式安装。

注意:rsync软件无论是服务器端还是客户端都是同一个软件包。

1、源码方式安装
# 源码方式安装rsync,需要到其官网下载对应的安装包。rsync官网:rsync.samba.org 1)、下载wget https://download.samba.org/pub/rsync/src/rsync-3.2.3.tar.gz2)、解压并安装tar -xvf rsync-3.2.3.tar.gz3)、编译安装# 源码安装rsync时,其编译时所需要的GCc库文件尽量提前安装完毕# 默认安装到/usr/local/目录下./configuremake &&make install4)、设置开机启动echo “/usr/local/bin/rsync --daemon -config=/etc/rsyncd.conf” >>/etc/profile
2、 yum方式安装
yum -y install  rsync#设置开机启动echo “/usr/local/bin/rsync --daemon -config=/etc/rsyncd.conf” >>/etc/profile

三、配置rsync daemon

rsync的配置分为服务器端和客户端

使用rsync协议,需要服务端启动守护进程

1、服务端配置

  • 准备rsync配置文件
# 以 rsync 用户启动进程uid = rsyncgid = rsync # 无需让rsync以root身份运行,允许接收文件的完整属性fake super = yes       # 禁锢推送的数据至某个目录, 不允许跳出该目录use chroot = no                max connections = 200          # 最大连接数timeout = 600                  # 超时时间ignore errors                  # 忽略错误信息read only = false              # 对备份数据可读写list = false                   # 不允许查看模块信息# 定义虚拟用户,作为连接认证用户auth users = myuser # 定义rsync服务用户连接认证密码文件路径secrets file = /etc/rsync.passwd#### 定义模块信息[backup]                comment = commit        # 模块注释信息path = /backup          # 定义接收备份数据目录# 只允许10.10.10段ip连接hosts allow = 10.10.10.0/24
  • 配置并启动守护进程
# 需要一个rsync进程运行时使用的普通用户 rsyncuseradd rsync -M -s /sbin/nologin# 服务端需要定义一个客户端连接    虚拟用户名和密码# 密码文件形式  user:passwdecho "myuser:passWord" > /etc/rsync.passwdchmod 600 /etc/rsync.passwd# 准备模块定义好的目录,客户端的数据都存放在该目录下mkdir /backupchown -R rsync.rsync /backup# 启动服务rsync --daemon# 查看服务ps aux | grep rsyncnetstat -lntp|grep 873

2、客户端使用

# 在客户端安装完毕rsync服务后,是不需要启动rsync服务的。# 我们只需要在客户端创建连接rsync服务器时,验证码用户所需要的密码文件即可。# 该密码文件中的密码要与rsync服务器上的密码文件中的密码对应# 并且也要与rsync服务器rsyncd.conf配置文件中的认证模块中的用户匹配。echo “password”>>/etc/rsync.passwdchmod 600 /etc/rsync.passwd# 查看 rsync 守护程序分配的所有 module 列表,可以执行下面命令。rsync rsync://10.10.10.10# 具体写法是服务器与目标目录之间使用双冒号分隔`::`# 地址中的module并不是实际路径名,而是 rsync 守护程序指定的模块名# 把本地的文件同步到远程服务器# rsync [OPTION]… [SRC]… [USER@]HOST::DEST# rsync [选项] [--port=]  [--password-file=] [/local/path] [用户名]@服务端IP::[模块名]rsync -av --password-file=/etc/rsync.passwd local/ myuser@10.10.10.10::backup# 把远程机器的文件同步到本地# rsync [OPTION]… [USER@]HOST::SRC [DEST]# rsync [选项] [--port=] [--password-file=] [用户名@]服务端IP::[模块名]  [/local/path]rsync -av --password-file=/etc/rsync.passwd myuser@10.10.10.10::backup local/

四、rsync使用

1、同步模式模式
1.1 本地同步
##本地  rsync   选项       源      目标Local:  rsync [OPTION...] SRC... [DEST]#将/etc目录备份到/opt目录下,和cp的区别在于会自动增量备份rsync -avz /etc /opt
1.2远程同步
ssh协议
# 默认使用 SSH 进行远程登录和数据传输# 不需要做任何配置,需要都安装rsync,操作上类似scp#将远端文件拉(下载)到本地Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]         #将本地文件推送(上传)到远端Push: rsync [OPTION...] SRC... [USER@]HOST:DEST #将etc推送到10.10.10.10下的自定义文件夹下rsync -az /etc/ 10.10.10.10:/opt/etc-$(hostname)-$(date +%F)
rsync协议

使用rsync协议,需要服务端启动守护进程

操作参考 配置rsync daemon

2、命令参数

常用参数

-v, –verbose详细模式输出。-a, –arcHive归档模式,表示以递归方式传输文件,并保持所有文件属性不变。-z, –compress对备份的文件在传输时进行压缩处理。–delete:删除那些DST中存在而在SRC中没有的文件。

所有参数

-a:–archive archive mode 权限保存模式,相当于 -rlptGoD 参数,存档,递归,保持属性等。-r:–recursive 复制所有下面的资料,递归处理。-p:–perms 保留档案权限,文件原有属性。-t:–times 保留时间点,文件原有时间。-g:–group 保留原有属组。-o:–owner 保留档案所有者(root only)。-D:–devices 保留device资讯(root only)。-l:–links 复制所有的连接,拷贝连接文件。-z:–compress 压缩模式,当资料在传送到目的端进行档案压缩。-H:–hard-links 保留硬链接文件。-A:–acls 保留ACL属性文件,需要配合–perms。-P:-P参数和 --partial --progress 相同,只是为了把参数简单化,表示传进度。--version:输出rsync版本。-v:–verbose 复杂的输出信息。-u:–update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件。--port=PORT:定义rsyncd(daemon)要运行的port(预设为tcp 873)。--delete:删除那些目标位置有的文件而备份源没有的文件。--delete-before: 接收者在传输之前进行删除操作--password-file=FILE :从 指定密码文件中获取密码。--bwlimit=KBPS:限制 I/O 带宽。--filter “-filename”:需要过滤的文件。--exclude=filname:需要过滤的文件。--progress:显示备份过程。

五、示例

1、常用示例
# 将当前目录下所有文件同步到远端rsync -avzP ./* myuser@10.10.10.15::backup # 从服务端同步数据到本地rsync -avzP  myuser@10.10.10.15::backup .# 保持服务端于客户端上数据完全一致,服务端有则同步给客户端,服务端没有,客户端有的则从客户端删除# –delete 选项,表示客户端上的数据要与服务器端完全一致,多则删之,少则补之# 用的时候要小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除rsync -avzP  --delete myuser@10.10.10.15::backup  /tmp/test/# 下面的 rsync 命令将10.10.10.10主机上的 /www 目录(不包含 /www/logs 和 /www/conf子目录)复制到本地的 /backup/www/ rsync -avzP --delete --exclude "logs/" --exclude "conf/"  \10.10.10.10:/www/ /backup/www/
2、快速删除大量数据

1、在need_delete 目录下建立30万个文件

time for i in $(seq 1 300000)doecho test >>$i.txtdone# 执行时间real0m42.267suser0m6.756ssys0m33.973s

2、测试rsync删除

# 先创建一个空目录new_dir# 然后执行 time rsync -a --delete-before new_dir/ need_delete/# 只需要几秒钟,速度非常快real0m8.146suser0m0.216ssys0m7.127s

3、测试 rm -rf 删除

time rm -rf need_delete/real0m9.639suser0m0.143ssys0m8.250s

六、rsyncd.conf 详解

1、全局参数
# 在独立运行时,用于指定的服务器运行的 IP 地址address = IP# 监听端口port = 873 # rsync 的守护进程将其 PID 写入指定的文件pid file = /var/run/rsyncd.pid# 指定支持 max connections 参数的文件lock file = /var/run/rsync.lock# 指定 rsync 守护进程的日志文件,而不将日志发送给 sysloglog file = /var/log/rsyncd.log#========== 控制参数 =============# # 以指定的 UID 传输文件uid = rsync        # 指定该模块以指定的 GID 传输文件。gid = rsync                     # 禁锢推送的数据至某个目录, 不允许跳出该目录,# 默认为 yes,则 rsync 在传输文件之前首先 chroot 到 path 参数所指定的目录下# 这样做的原因是实现额外的安全防护,但是缺点是需要 root 权限# 并且不能备份指向 path 外部的符号连接所指向的目录文件use chroot = no                # 无需让rsync以root身份运行,允许接收文件的完整属性fake super = yes                # 大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试# 默认为0 (没有限制)max connections = 200# 超时时间timeout = 600                  # 指定在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误。# 一般来说 rsync 在出现 I/O 错误时将将跳过 –delete 操作# 以防止因为暂时的资源不足或其它 I/O 错误导致的严重问题。ignore errors # 指定是否允许客户上传文件。# 默认为true,不允许用户上传文件,# 若为 false 并且服务器目录也具有读写权限则允许上传。read only = false # 指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。# 默认为 true,如果设置该选项为 false,可以创建隐藏的模块list = false                  
2、模块参数

模块参数主要用于定义 rsync 服务器哪个目录要被同步。

模块声明的格式必须为 [module] 形式,这个名字就是在 rsync 客户端看到的名字,类似于 Samba 服务器提供的共享名。

而服务器真正同步的数据是通过 path 来指定的。可以根据自己的需要,来指定多个模块,模块中可以定义以下参数:

  • 基本模块参数
# 指定模块名[backup]# 指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的path = /backup  # 给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户comment = commit
  • 模块文件筛选参数
# 指定多个由空格隔开的多个文件或目录(相对路径)# 并将其添加到 exclude 列表中。这等同于在客户端命令中使用 –exclude 来指定模式。exclude = exclude_file# 指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取 exclude 列表定义exclude from = exclude-file.txt# 指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中。# 这等同于在客户端命令中使用 –include 来指定模式 。include = include-file.txt# 指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义include from = exclude-file.txt# 一个模块只能指定一个exclude 参数、一个include 参数# 结合 include 和 exclude 可以定义复杂的exclude/include 规则# 这几个参数分别与相应的rsync 客户命令选项等价,唯一不同的是它们作用在服务器端
  • 模块用户认证参数
# rsync 默认匿名方式传输# 若只配置匿名访问的 rsync 服务器,则无需设置下述参数# 指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。# 这里的用户和系统用户没有任何关系。用户名和口令以明文方式存放在 secrets file 参数指定的文件中auth users = user_name# 指定一个 rsync 认证口令文件。只有在 auth users 被定义时,该文件才起作用secrets file = /etc/rsync.passwd# rsync 认证口令文件的权限一定是 600,否则客户端将不能连接服务器。# rsync 认证口令文件中每一行指定一个 用户名:口令 对,格式为:# username:passwd# 一般来说口令最好不要超过8个字符# 一个rsync配置文件中可以包含多个认证模块,同时一个密码文件中也可以存放多个用户和其对应的密码。# 其中每一个认证模块可以对应不同的客户端。

来源地址:https://blog.csdn.net/wq1205750492/article/details/124497271

--结束END--

本文标题: rsync详解

本文链接: https://www.lsjlt.com/news/419598.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • rsync详解
    一、rsync介绍 1、rsync是什么 rsync(remote synchronize)是Liunx/Unix下的一个远程数据同步工具。它可通过LAN/WAN快速同步多台主机间的文件和目录,并适当...
    99+
    2023-09-27
    服务器 linux 运维
  • Java之Rsync并发迁移数据并校验详解
    java调用Rsync并发迁移数据并执行校验 java代码如下 RsyncFile.java import lombok.NoArgsConstructor; import lo...
    99+
    2024-04-02
  • rsync to synchronize
    python code  rsync  #!/usr/bin/env pyt hon #wraps up rsync to synchronize two directories  from subprocess import call i...
    99+
    2023-01-31
    rsync synchronize
  • Rsync ERROR: auth failed on module解决方法
    示意图:Rsync 版本 [root@mail video]# rsync –version rsync version 3.0.6 protocol version 30 Copy...
    99+
    2022-11-15
    Rsync ERROR auth failed module
  • rsync怎么用
    这篇文章主要为大家展示了“rsync怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“rsync怎么用”这篇文章吧。rsync 是一个常用的 Linux 应用程序,用于文件同步,它可以在本地计...
    99+
    2023-06-28
  • 如何使用rsync
    这篇文章将为大家详细讲解有关如何使用rsync,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。rsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersy...
    99+
    2023-06-27
  • rsync实时同步
    与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。192.168.0.1 源服...
    99+
    2023-06-05
  • Rsync远程同步
    一、rsync远程同步 1.rsync简介   rsync是C/S架构的数据镜像备份工具,可以实现全量备份和快速增量备份支持本地复制或ssh、rsync主机同步。 rsync默认端口为 873 rsync特性:可以在不通主机之间镜像同步整个...
    99+
    2023-10-27
    linux 服务器 运维
  • rsync如何结合find
    这篇文章主要介绍了rsync如何结合find,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。rsync -avpz -e ssh 192.168.1.100:/ `find /...
    99+
    2023-06-09
  • Linux下rsync怎么用
    这篇文章将为大家详细讲解有关Linux下rsync怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。rsync 是一个常用的 Linux 应用程序,用于文件同步,它可以在本地计算机与远程计算机之间,或者...
    99+
    2023-06-28
  • 怎么理解Fedora rsync备份镜像工具
    怎么理解Fedora rsync备份镜像工具,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。经过长时间学习rsync,于是和大家分享一下,你可能会遇到Fedora...
    99+
    2023-06-16
  • Rsync参数有哪些
    这篇文章主要为大家展示了“Rsync参数有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Rsync参数有哪些”这篇文章吧。Rsync 参数选项说明-v, --verbose 详细模式输出 -...
    99+
    2023-06-16
  • Rsync 6个常用命令
    本篇内容主要讲解“Rsync 6个常用命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Rsync 6个常用命令”吧!Rsync 使用工具使用起来非常简单、方便,若使用得当的话还可以增强操作的安...
    99+
    2023-06-16
  • Rsync在Shell中怎么用
    这篇文章给大家分享的是有关Rsync在Shell中怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Rsync 使用数据备份完成后该操作会自行终止。对于此,***是在上述命令的基础上再添加一个“-a”选项(对于...
    99+
    2023-06-16
  • Linux下rsync如何安装
    这篇文章主要介绍了Linux下rsync如何安装,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote...
    99+
    2023-06-28
  • 怎么解析Rsync命令的17个备份选项
    这篇文章将为大家详细讲解有关怎么解析Rsync命令的17个备份选项,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。常常备份是良好的习惯,只是这么好习惯只有在无数次的顿足捶胸、呼天抢地的懊恼之后...
    99+
    2023-06-28
  • 怎么在Linux下使用rsync
    这篇文章主要介绍“怎么在Linux下使用rsync”,在日常操作中,相信很多人在怎么在Linux下使用rsync问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在Linux下使用rsync”的疑惑有所帮助!...
    99+
    2023-06-16
  • linux rsync同步命令介绍
    这篇文章主要介绍“linux rsync同步命令介绍”,在日常操作中,相信很多人在linux rsync同步命令介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux rsync同步命令介绍”的疑惑有所...
    99+
    2023-06-09
  • 如何搭建rsync服务器
    本篇内容介绍了“如何搭建rsync服务器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下载rsync 源码包wget  ...
    99+
    2023-06-27
  • shell如何实现rsync备份
    这篇文章主要介绍了shell如何实现rsync备份,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。rsync备份rsync -r&n...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作