带你走进rsync的世界

冯琪的博客 冯琪的博客     2022-08-05     384

关键词:

导读 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。rsync共有3种使用方法,在配置rsync也是有6个步骤的。下面我们就从rsync的介绍,rsync的使用和rsync的配置带你走进rsync的世界
一.rsync简介

Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。 在使用 rsync 进行远程同步时,可以使用两种方式:远程 Shell 方式(建议使用 ssh,用户验证由 ssh 负责)和 C/S 方式(即客户连接远程 rsync 服务器,用户验证由 rsync 服务器负责)。rsync 被称为是一个文件同步的快速方法,主要是因为其在同步文件时会检查文件之间是否有差异,它只同步存在差异或者不存在的文件,但是首次同步时速度依然很慢。

rsync有许多选项:
    -n: 在不确定命令是否能按意愿执行时,务必要事先测试;-n可以完成此功能;
    -v: --verbose,详细输出模式
    -q: --quiet,静默模式
    -c: --checksum,开启校验功能,强制对文件传输进行校验
    -r: --recursive,递归复制;
    -a: --archives,归档,保留文件的原有属性
    -p: --perms 保留文件的权限
    -t: --times 保留文件的时间戳
    -l: --links 保留文件的符号链接 
    -g: --group 保留文件的属组
    -o: --owner 保留文件的属主
    -D: --devices 保留设备文件
    -H, --hard-links 保留硬链结;
    -S, --sparse 对稀疏文件进行特殊处理以节省DST的 空间;
    -e ssh: 表示使用ssh协议作承载
    -z: 对文件压缩后传输
    --progress:显示进度条
    --stats: 显示如何执行压缩和传输
    --delete:删除那些DST中有而SRC没有的文件,即删除DST中多余的文件;

技术分享

二,rsync使用方法

rsync可以在此处下载 http://rsync.samba.org/ ,CentOS系统上rsync默认是安装的。

rsync有六种不同的工作模式:

1. 拷贝本地文件

当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。

[[email protected] ~]# rsync -avSH /home/feiyu/ /bak/
2.将本地机器的内容拷贝到远程机器

使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。

[[email protected] ~]# rsync -av /home/feiyu/ 192.168.0.24:/home/feiyu/
3.将远程机器的内容拷贝到本地机器

使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。

[[email protected] ~]# rsync -av 192.168.0.24:/home/feiyu/  /home/feiyu/ 

注意:rsync命令使用中,如果源参数的末尾有斜线,就会复制指定目录的内容,而不复制目录本身;没有斜线,则会复制目录本身;目标参数末尾的斜线没有作用;因此下面的命令

[[email protected] ~]# rsync -r /mydata/data /backups/ : 会把目录data直接同步至/backups目录中
 
[[email protected] ~]# rsync -r /mydata/data/ /backups/: 会把目录data/中的内容的同步至/backups目录中

后面三种模式都是在rsync作为服务器时才能使用的,下面就开始配置rsync作为一个服务。

三,配置rsync服务

配置一个简单的rsync服务并不复杂,但是我们安装好rsync后,并没有发现配置文件,所以你需要手动建立一些配置文件。rsync可以经由xinetd启动daemon,或者作为一个独立进程启动daemon。如果把它作为一个独立进程来启动,只需要运行命令:rsync –daemon即可;但是我们一般将其作为超级守护进程使用。下面是安装步骤:

1.安装并启动xinetd
[[email protected] ~]# yum -y install xinetd 
 
[[email protected] ~]# ls  /etc/xinetd.d/    #rsync的xinetd配置文件已经存在
chargen-dgram   daytime-dgram   discard-dgram   echo-dgram   rsync          time-dgram
chargen-stream  daytime-stream  discard-stream  echo-stream  tcpmux-server  time-stream
2. 为rsync服务提供配置文件

配置文件为/etc/rsyncd.conf,获取帮助的方式:man rsyncd.conf。配置文件需要定义一个全局配置和多个rsync共享配置。

[[email protected] ~]# cat  /etc/rsyncd.conf 
# Global Settings
# port = 873   端口号默认为873,可以不指定
uid = nobody  //指定当模块传输文件的守护进程UID
gid = nobody  //指定当模块传输文件的守护进程GID
use chroot = no  //使用chroot到文件系统中的目录中
max connections = 5   //最大并发连接数
strict modes = yes      #严格检查文件权限
pid file = /var/run/rsyncd.pid  //指定PID文件
lock file = /usr/local/rsyncd/rsyncd.lock  //指定支持max connection的锁文件,默认为/var/run/rsyncd.lock
log file = /var/log/rsyncd.log  //rsync 服务器的日志
 
# Directory to be synced
[mydata]          //自定义模块
path = /mydata/data    //用来指定要备份的目录
ignore errors = yes    //可以忽略一些IO错误
read only = no  //设置no,客户端可以上传文件,yes是只读
write only = no  //no为客户端可以下载,yes 不能下载
hosts allow = 192.168.0.0/16  //可以连接的IP
hosts deny = *   //禁止连接的IP
list = false       //客户请求时,使用模块列表
uid = root
gid = root	
auth users = myuser   //连接用户名,和linux系统用户名无关系
secrets file = /etc/rsyncd.passwd	//验证密码文件

说明(deny | allow 规则):
1、二者都不出现时,默认为允许访问;
2、只出现hosts allow: 定义白名单;但没有被匹配到的主机由默认规则处理,即为允许;
3、只出现hosts deny: 定义黑名单;出现在名单中的都被拒绝;
4、二者同时出现:先检查hosts allow,如果匹配就allow,否则,检查hosts deny,如果匹配则拒绝;如二者均无匹配,则由默认规则处理,即为允许;

3.创建密码文件

文件格式(明文): username : password

[[email protected] ~]# echo "myuser:mypass" >  /etc/rsyncd.passwd 
 
[[email protected] ~]# chmod 600 /etc/rsyncd.passwd     #权限必须为600

 

4.启动服务
[[email protected] ~]# service xinetd  start
5.使用方法 ( 后三种模式 )

a. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。

[[email protected] ~]# rsync -av [email protected]::mydata /tmp/     #myuser为rsync服务器的一个用户

b. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。

[[email protected] ~]# rsync -av install.log.syslog  [email protected]::mydata 

c. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。

[[email protected] ~]# rsync -av [email protected]::mydata

技术分享

一个"收纳箱"带你走进数据库的世界

一个"收纳箱"带你走进数据库的世界一、前言1.1时势造英雄——数据时代,未来已来?如今,我们已然“从IT时代迈入DT时代”,马云也说过:未来的资源不是石油,不是天然气,而是“数据”。这是因为,在信息技术迭代... 查看详情

带你走进微处理架构的世界

摘要:微处理架构——处理复杂事物  许多公司,比如Amazon、eBay和NetFlix,通过采用微处理结构模式解决了上述问题。其思路不是开发一个巨大的单体式的应用,而是将应用分解为小的、互相连接的微服务。微服务正在博客、社... 查看详情

瞄一眼,带你走进sparksql的世界

本文由  网易云 发布。 作者:范欣欣(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权。)最近想来,大数据相关技术与传统型数据库技术很多都是相互融合、互相借鉴的。传统型数据库强势在于其... 查看详情

miox带你走进动态路由的世界——51信用卡前端团队

写在前面:有的时候再做大型项目的时候,确实会被复杂的路由逻辑所烦恼,会经常遇到权限问题,路由跳转回退逻辑问题。这几天在网上看到了51信用卡团队开源了一个Miox,可以有效的解决这些痛点,于是乎我就做了一些尝试... 查看详情

《手牵手带你走进python世界》系列五(代码片段)

importrequestsfrombs4importBeautifulSoupimportdatetimeimportpandasaspdimportmatplotlib.pyplotaspltimportreimportjiebaimportnumpyasnpfromwordcloudimportWordCloud,ImageColorGeneratorurl="https://co 查看详情

漫游语音识别技术——带你走进语音识别技术的世界

前有古人,后有小王,大家好,我是你们爱思考的小王学长,今天我来带大家漫游一下当下发展火热的语音识别技术,通俗易懂、干货满满、一定要学到最后呦!一看到语音识别,不知道大家有没有想... 查看详情

java基础教程带你走进java的世界(代码片段)

Java教程Java简介什么是Java?Java是由SunMicrosystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。Java分为三个体系:JavaSE(J2SE,Java2PlatformStandardEdition,java平台标准版)JavaEE(J2E 查看详情

java基础教程带你走进java的世界(代码片段)

Java教程Java简介什么是Java?Java是由SunMicrosystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。Java分为三个体系:JavaSE(J2SE,Java2PlatformStandardEdition,java平台标准版)JavaEE(J2E 查看详情

(深入篇)漫游语音识别技术—带你走进语音识别技术的世界(代码片段)

前有古人,后有小王,大家好,我是你们爱思考的小王学长,今天咱们继续漫游语音识别技术哈,今天内容稍微专业一些,大家可以结合上一篇漫游语音识别技术一起学习。上篇我们简单了解了语音识别技... 查看详情

带你走进cookie,session,token的世界(代码片段)

前言无状态的HTTP协议一天,你有个需求,你要去超市买一瓶可乐。到了超市买了可乐,你告诉售货员,下次给我准备下雷碧,我下次来拿。第二次,你去超市拿雷碧,售货员说他不记得你什么时候说要... 查看详情

凌辰:移动互联网营时代,钱脉通创客带你走进创客世界!

前言:当下,除了空气、水电是人类必需的元素,还有一个必不可少的就是互联网。互联网赋予人类无限的可能,让个人力量增强、个人价值释放。而如今我们每个人都身处移动互联网时代。伴随着移动通信的发展、微信微博等... 查看详情

万字解析:带你走进五子棋(普通版)和三子棋的世界(c语言)(代码片段)

今天,我们来再来实现一个大家都不陌生的小项目:三子棋。1,三子棋1,思路分析写一个小项目,必不可少的是思路的构建。写一个游戏,我们首先需要一个菜单,这是最基本的,让用户来选择是... 查看详情

全网首发,一篇文章带你走进pycharm的世界----别再问我pycharm的安装和环境配置了!!!万字只为君一笑,赶紧收藏起来吧

欢迎来到我的世界:Pycharmpycharm的前世今生欢迎来到我的世界:Pycharm一.为啥要用Pycharm二.安装哪一款Pycharm三.怎样获取专业版的Pycharm四.Python版本的选择AnacondaPython五.Pycharm的安装六.Pycharm的环境配置接下来,最伟大的... 查看详情

❤️大学三年沉淀,把我的学习经验分享给你,爆肝万字带你走进编程世界!❤️(代码片段)

Hello,大家好,我是Alex。时光匆匆,暑假过的很快,转眼又到了大学的开学季,我也是又混进了我们学院的新生群,发现大家对计算机充满着迷之向往,啊哈哈哈,不过没有人带着入门还是很容易... 查看详情

☀️☀️☀️不会还有人学不会c语言中的指针和数组吧?chris带你走进并玩转指针与数组的世界☀️☀️☀️(代码片段)

详解指针与数组(😉学不会退学费😉)一、✨指针基本概念✨二、🎃为什么要有指针🎃三、🎠如何理解编址🎠四、👑指针的内存布局、解引用👑五、🎮如何将数值存储到指定的内... 查看详情

「建议收藏」第一人称视角带你走进vue源码世界(代码片段)

前言本文不引战,成熟的人应该脱离框架的范畴,而不是纠结谁更好或者谁更不好。有道是黑猫白猫,抓到老鼠就是好猫。所以本文会带大家读源码。简单易懂,大佬小白都能看明白。并收获益处。从new一个Vue的... 查看详情

python带你走进哈利波特的魔法世界(代码片段)

先简单介绍一下jieba中文分词包,jieba包主要有三种分词模式:精确模式:默认情况下是精确模式,精确地分词,适合文本分析;全模式:把所有能成词的词语都分出来,但是词语会存有歧义;搜索引... 查看详情

一篇文章带你走进cookie,session,token的世界

参考技术A前言一天,你有个需求,你要去超市买一瓶可乐。到了超市买了可乐,你告诉售货员,下次给我准备下雷碧,我下次来拿。第二次,你去超市拿雷碧,售货员说他不记得你什么时候说要准备雷碧。这次你学聪明了,售... 查看详情