rsync服务与搭建详解

简介:

rsync介绍

rsync全称remote sync,是一种更高效、可以本地或远程同步的命令,之所以高效是因为rsync会对需要同步的源和目的进度行对比,只同步有改变的部分,所以比scp命令更高效,但是rsync本身是一种非加密的传输,可以借助-e选项来设置具备加密功能的承载工具进行加密传输

rsync的工作模式

rsync有四种工作模式分为:

1、shell模式,也称作本地模式

2、远程shell模式,此时可以利用ssh协议承载其数据传输过程

3、列表模式,其工作方式与ls相似,仅列出源的内容:-nv

4、服务器模式,此时,rsync可以工作在守护进程,能够接收客户端的数据请求;在使用时,可以在客户端使用rsync命令把文件发送到守护进程,也可以像服务器请求获取文件

rsync命令选项

-n:测试,在不确定命令是否能按照意愿执行时,务必要实现测试

-v:详细输出模式,--verbose

-q:--quiet,静默模式

-c:--checksum,开启校验功能,强行对文件传输进行校验

-r:--recursive,递归复制

-a: --archives.归档,保留文件的原有属性相当于rlptgoD的选项组合wKioL1gEMvXRMZ5SAAAitet95ug281.png-p:--perms 保留文件的权限

-t: --times 保留文件的时间戳

-l:--links 保留文件的符号链接

-g:--group保留文件的属组

-o:--owner 保留文件的属主

-D:--devices 保留设备文件

-e ssh:表示使用ssh协议作为继承

-z:对文件压缩后传输

--progress:显示进度条

根据同步的方向不同,分为推、拉两种方式,其命令用法为:wKiom1gEMvbRkULxAABsJHLg7sA575.png

此处需要注意的地方有两点:

1、如果使用命令时只指定源而不指定目标,仅会将源以列表的形式显示而不同步

2、rsync命令使用中,如果源参数的末尾有斜线,只会复制指定目录的内容,而不复制目录本身,没有斜线,则会复制目录本身,包括目录

wKioL1gEMvbBhYW8AAAqN1fsmoE538.png

wKioL1gEMvbwOMcEAABNBYjmafE850.png

rsync生产环境使用方式

在中小企业的生产环境中经常有这么一种需求,A服务器上的某些重要文件需要每天备份到B服务器上,此时就可以使用rsync+crontab来进行备份,其步骤为:wKiom1gEMvfQYbxZAABOT_yvU74642.png

1、配置rsync服务器端

yum -y install xinetd   rsync是位于xinetd守护进程中

2、vim /etc/rsyncd.conf 创建rsync的配置文件wKioL1gEMvfgz6MaAAArMUDk9-g415.png

3、配置文件分为全局配置段模块配置段,注意配置文件内的设置项使用格式wKiom1gEMvegErnxAAAlocZSUVU295.png

#Global Parameters

pid file = /var/run/rsyncd.pid  设置rsync运行时pid文件的位置

log file = /var/log/rsyncd.log  设置rsync运行时log文件的位置

lock file = /var/run/rsyncd.lock  设置rsync运行时lock文件的位置

uid = nobody

gid = nobody

uid和gid这两个选项的作用是指定在运行rsync时以哪个用户来替代root,nobody是系统默认值,不存在于系统用户中,如果此处设置为nobody,则在模块配置段依然需要指定一个系统用户来运行rsyncwKiom1gEMvjTE_0NAABeLInSDKY030.png

ignore errors = yes 是否忽略错误

list = no 是否允许列出名单

#Module Parameters

[module_name] 服务器模式下rsync目的名称(DES)使用的是模块名称

path = /path/to/some_dir

uid = root

gid = root

如果全局配置段的uid和gid设置时不是nobody而是使用的一个系统账户,在模块配置段这两个选项可以不添加这两个选项

max connections = 5 最大连接用户数

timeout = 300 超时时间

read only = false 只读,适用于Client端pull场景

write only = false 只写,适用于Client端push场景

auth users = username 允许链接该模块的用户,该用户是虚拟用户可以不存在wKioL1gEMvjS8GtzAABrRjLW6G0588.png

secrets file = /etc/rsync.passwd  用户密码(auth user)的存放文件

strict modes = yes 检查secrets file文件的权限是否满足要求wKiom1gEMviQRr58AABHNDMV6DI511.png

use chroot = no 是否禁锢用户家目录

max connections = 4 最大连接数

hosts allow = ipaddress/netmask   白名单

hosts deny = ipaddress/netmask   黑名单

此处需要注意:

(1)默认规则为允许访问,二者都不出现时

(2)只出现hosts allow:定义白名单;但没有被匹配到的由默认规则处理,即为允许

(3)只出现hosts deny:定义黑名单;出现在名单中的都被拒绝

(4)二者同时出现,先检查hosts allow,如果匹配就allow,否则,检查hosts deny 如果匹配则拒绝,如二者均无匹配,则使用默认的,即允许

4、为auth user用户创建secrets file文件存放账号和密码,

vim /etc/rsync.passwd    账号可以不存在,密码可以任意设置wKioL1gEMvjSKIsCAAAExbkKs_k395.png

5、因为开启了strict modes = yes,所以要修改/etc/rsync.passwd文件权限

chmod 600 /etc/rsync.pass

6、将rsync服务设为开机启动并启动该服务,rsync侦听在873端口

chkconfig rsync on

service xinetd startwKioL1gEMvnjWaIiAABIy2n6qJI240.png

7、使用命令测试是否可以正常同步wKiom1gEMvmgfZJGAAAcvmGxFVo759.png

testuser与password就是步骤4中定义在rsync.passwd文件中的用户和密码,test目标则是Module Parameters中定义的模块名称

使用password-file文件登录

大部分的备份我们需要结合crontab来执行自动备份,此时就需要rsync在使用时结合password-file文件来免密码登录,操作步骤为:

1、vim /etc/rsync.passwd 创建存放密码的password-file文件来,此处注意的是该文件内容不同于服务器端,仅保存使用rsync命令时的用户的密码wKiom1gEMvnTb8UFAAACti3KGTw976.png

2、安全起见还是需要修改/etc/rsync.passwd文件权限

chmod 600 /etc/rsync.pass

3、再次进行测试,使用--password-file指明存放密码的文件位置,步骤1中的密码此时就是testuser的密码,该用户名和密码需要与服务器端/etc/rsync.passwd文件中的用户名和密码匹配wKioL1gEMvnAYu1OAAA4l7WpVqo632.png

4、使用crontab -e 命令设置周期性任务,周期性任务保存在/var/spool/cron/user_name文件中,或者使用crontab -l可以查看wKiom1gEMvqScYwBAAAVhdfYMow896.png

如果没有 --delete 选项,源服务器上已删除的部分再执行下一次周期任务时依然会继续保留在目标服务器上,目标服务器只同步源服务器新增的部分wKioL1gEMvqh-mI0AAA9U9Nx9IY607.png

增加 --delete 选项会将源和目标服务器上有差异的部分删除掉wKioL1gEMvrgohclAAA05ZTAP5E001.png


本文转自 qiao645 51CTO博客,原文链接:http://blog.51cto.com/arkling/1862567


相关文章
|
SQL 存储 Oracle
oracle错误代码大全(超详细)
本篇文章是对oracle错误代码进行了详细的总结与分析,需要的朋友参考下
2096 0
|
数据可视化 数据挖掘 API
数据可视化秘籍:用Matplotlib和Seaborn创建洞察力图表
【4月更文挑战第12天】本文介绍了Python中的数据可视化库Matplotlib和Seaborn,它们是数据分析中的强大工具。Matplotlib是基础绘图库,提供面向对象的API,可绘制多种图表。Seaborn基于Matplotlib,提供更美观和易用的界面,支持复杂的数据可视化技术。文中展示了如何使用这两个库创建线图、散点图、条形图、饼图和直方图,以帮助理解数据并展示发现。
249 0
|
网络协议 算法 Linux
TCP 协议报文格式&tcpdump抓包工具
之前文章介绍过 wireshark 抓包工具的 捕获过滤器 和 显示过滤器,而 捕获过滤器 使用的 BPF 过滤语法可以在 tcpdump 中使用,tcpdump 可以在 Linux 服务端使用,熟悉和了解 tcpdump 抓包工具的使用,可以帮助分析服务端数据报文的情况。
838 0
|
Scala 流计算
Flink / Scala - 使用 CountWindow 实现按条数触发窗口
CountWindow 数量窗口分为滑动窗口与滚动窗口,类似于之前 TimeWindow 的滚动时间与滑动时间,这里滚动窗口不存在元素重复而滑动窗口存在元素重复的情况,下面 demo 场景为非重复场景,所以将采用滚动窗口。......
1146 0
Flink / Scala - 使用 CountWindow 实现按条数触发窗口
|
Java Linux C++
性能工具之 C/C++ 分析工具 valgrind
【5月更文挑战第26天】性能工具之 C/C++ 分析工具 valgrind
317 2
性能工具之 C/C++ 分析工具 valgrind
|
存储 监控 网络安全
rsync 远程同步 基础介绍
rsync 远程同步 基础介绍
|
12月前
|
存储 人工智能 自然语言处理
效率翻倍!2024免费AI流程图生成工具评测
2分钟了解有哪些好用的AI流程图生成工具。
2758 4
效率翻倍!2024免费AI流程图生成工具评测
|
存储 关系型数据库 MySQL
(十九)MySQL之表分区篇:涨知识了!携手共探鲜为人知的表分区!
分库分表相信大家都听说过,但(partitioning)表分区这个概念却鲜为人知,MySQL在5.1版本中开始支持了表分区技术,同时在MySQL5.5中进行了优化,自从MySQL支持的绝大部分引擎都开启了表分区功能。
1355 2
|
应用服务中间件 nginx Docker
connect() failed (113: No route to host) while connecting to upstream
connect() failed (113: No route to host) while connecting to upstream
648 0
|
存储 安全 文件存储
网盘和NAS各有其优势和不足
【5月更文挑战第13天】网盘适合跨设备随时随地访问数据,便于分享,但依赖网络,可能存在安全风险。NAS提供高速、稳定的私有存储,可定制化强,但需技术知识和维护。选择取决于个人需求和场景,如对移动性需求高则选网盘,重视性能与隐私则选NAS。
693 4

热门文章

最新文章