您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

Linux搭建rsync备用服务器,及配置文件详解

时间:2022-02-25 09:57:57  来源:  作者:运维笔记ywbj

rsync官方网址:https://rsync.samba.org/

一:rsync介绍

rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份工具。

在守护进程模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输协议或者通过远程shell如RSH或者SSH提供文件。SSH模式下,rsync客户端运行程序必须同时在本地和远程机器上安装。

全量与增量,全量:将全部数据进行传输覆盖,增量:只传输差异部分的数据,rsync通过独特的“quick check”算法,实现增量数据传输

rsync的功能

类似与cp命令    --- (本地备份传输数据)

类似于scp命令   --- (远程备份传输数据)

类似于rm命令 --- (实现无差异同步备份)

类似于ls命令 --- (本地文件信息查看)

模拟环境,两台机器:linux 系统centos 7

备份服务器ip:172.16.2.4, 客户端服务器(nfs存储共享)ip:172.16.2.3

目的:将nfs服务器/www目录的数据,备份到备份服务器的/backup/web目录

扩展配置:

1:rsync+inotify实时监控同步备份:

2:rsync+sersync实时监控同步备份

 

二:rsync的安装

服务端(备份服务器)和客户端都要安装。

yum -y install rsync

如果想安装最新版本,则自己wget官网最新版本,然后编译安装。

基本命令语法:

Local: rsync [OPTION...] SRC... [DEST]

Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

 

当然如果觉得记得复杂的话,就记住从前往后传即可:rsync 参数 前面(源路径) 后面(目的路径)

注:源路径如果是一个目录的话,带上尾随斜线和不带尾随斜线是不一样的,不带尾随斜线表示的是整个目录包括目录本身,带上尾随斜线表示的是目录中的文件,不包括目录本身。

 

三:三种传输方式

1):本地模式:类似与cp命令

将/etc/fstab同步至/tmp目录,如果fstab加斜杠/,则将fstab目录下所有文件同步至/tmp。

以下命令类似功能 cp /etc/fstab /tmp

rsync /etc/fstab /tmp #在本地同步,将fstab目录同步至/tmp
rsync /etc/fstab/ /tmp #将fstab目录下所有文件同步至/tmp

 

2):远程模式:类似于scp命令

远程分pull下载和push上传两种:

rsync -r /www 172.16.2.4:/backup/web 
# 将本地/www目录上传至远程主机的/backup/web下,远程/backup/web目录和本地/www保持同步
rsync -r 172.16.2.4:/backup/web /www 
# 将远程主机的/backup/web目录下载到本地/www下,本地/www目录和远程/backup/web保持同步

 

3):守护进程模式(最主要的用法)

注意:如果是下载数据,远端服务器源数据目录权限可以为任意权限

注意:如果是上传数据,远端接收文件的目录权限必须是rsync权限

3.1): 服务端配置

创建rsync系统用户

useradd rsync -s /sbin/nologin -M 
#创建一个rsync的虚拟用户,只被程序使用

修改服务端配置文件

vim /etc/rsyncd.conf

配置如下:

fake super = yes 这个选项版本以前是没有的,在新版本中如果不加上这个参数,会报权限错误 rsync: chgrp ".hosts.G6sZha" (in backup) fAIled: Operation not permitted (1)

注:配置文件最后要删除掉所有#注释部分的备注信息,否则同步过程有可能会失败l

uid = rsync #用户 远端命令使用rsync访问共享目录
gid = rsync #用户组
use chroot = no #安全相关
max connections = 200 #最大连接数
timeout = 300 #超时时间(不进行备份多长时间断开)
pid file = /var/run/rsyncd.pid #进程对应进程号文件(存放服务运行时进程id号)
lock file = /var/run/rsync.lock #锁文件
log file = /var/log/rsyncd.log #日志文件,显示出错信息
fake super = yes #在新版本中必须加这个
#模块信息:
[backup]
comment = "backup"
path = /backup/web #模块对应的位置(路径)
ignore errors #忽略错误程序
read only = false #是否只读(这里是假,表示能写入)
list = false #是否可以列表*
hosts allow = 172.16.2.0/24 #准许访问rsync服务器客户范围(白名单)
#hosts deny = 0.0.0.0/32 #禁止访问rsync服务器客户范围(黑名单)
auth users = rsync_backup #不存在的用户,只用于认证
#设置进行连接认证的密钥文件:
secrets file = /etc/rsync.password #认证时密钥文件

创建数据备份存储目录

创建备份目录,将backup目录及目录以下文件权限改为rsync

mkdir /backup/web
chown -R rsync.rsync /backup/
#一定要将文件属主和属组改成rsync用户

 

创建认证用户密码文件,修改文件权限

注:密码文件必须是600权限,否则报错

echo "rsync_backup:123456" >/etc/rsync.password
chmod 600 /etc/rsync.password #为了安全起见,把认证用户的密码文件权限改成600

启动rsync守护进程,并查看是否启动

rsync --daemon #启动守护进程
ps -ef |grep rsync #查看是否启动进程
netstat -lntup |grep rsync #查看是否监听873端口

查看已经正常启动并监听873端口:

Linux搭建rsync备用服务器,及配置文件详解

 

3.2): 客户端配置

创建密码文件,客户端密码文件中,只需要密码即可,密码文件的权限是600

echo "123456" >/etc/rsync.password
chmod 600 /etc/rsync.password

3.3 ):传输测试,相关参数为服务端配置文件设置的

客户端上传至服务端测试:

/www/将本地www文件下所有文件上传至备份服务器172.16.2.4。如果是/www,则是将整个www文件夹备份过去。

rsync_backup为服务器中配置文件的auth users参数,::backup是以后的模块参数及配置文件中的[backup],后面接配置文件中的密码文件路径,免交互,不用输入密码就可传输。

rsync -avz /www/ rsync_backup@172.16.2.4::backup --password-file=/etc/rsync.password

在客户端下载测试:

将备份服务器的backup模块配置的path路径的文件下载至本地www目录下。

rsync -avz rsync_backup@172.16.2.4::backup --password-file=/etc/rsync.password /www

到此配置完成!!!

3.4): 添加开机启动守护进程

echo "/usr/bin/rsync --daemon" >> /etc/rc.local

 

四:rsync命令参数(参考)

参数:说明

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

-a:--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-z: 对备份的文件在传输时进行压缩处理

-P: 显示进度

-r: --recursive 对子目录以递归模式处理

-l: --links 保留软链结

-p: --perms 保持文件权限

-o: --owner 保持文件属主信息

-g:--group 保持文件属组信息

-D: --devices 保持设备文件信息

-t:--times 保持文件时间信息

-e: --rsh=command 指定使用rsh、ssh方式进行数据同步

-S: --sparse 对稀疏文件进行特殊处理以节省DST的空间

-n: --dry-run 现实哪些文件将被传输

-w:--whole-file 拷贝文件,不进行增量检测

-B: --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。

-x: --one-file-system 不要跨越文件系统边界

-R: -relative 使用相对路径信息

-b: --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。

-u: --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件

-q: --quiet 精简输出模式

-c: --checksum 打开校验开关,强制对文件传输进行校验

--exclude=PATTERN:指定排除不需要传输的文件模式

--exclude-from=FILE:排除FILE中指定模式的文件

--bwlimit=KBPS:限制I/O带宽,KBytes per second

--delete:删除那些DST中SRC没有的文件

--password-file=FILE:从FILE中得到密码

 

平常经常使用命令参数有rsync -avz

排除同步:--exclude=a (排除a)

rsync -avz --exclude=a /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password

 

排除a 和b

rsync -avz --exclude={a,b} /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password

 

排除连续的a-f

rsync -avz --exclude={a..f} /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password

 

完全同步:无差异同步--delete

rsync -avz --delete /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password

 

五:服务端配置文件属性参数详解(参考)

文件配置在vim /etc/rsyncd.conf,没有的话需自己创建。

参数配置分为全局参数和模块参数

全局参数如下:

常见的全局参数:说明

port : # 指定后台程序使用的端口号,默认为873。

uid : # 该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是" nobody"。

gid : # 该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为" nobody"。

max connections : # 指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。 默认值是0,也就是没有限制。

lock file :# 指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。

motd file : # " motd file"参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户, 默认是没有motd文件的。

log file : # " log file"指定rsync的日志文件,而不将日志发送给syslog。

pid file :# 指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”,存放进程ID的文件位置。

hosts allow = :# 单个IP地址或网络地址 ,允许访问的客户机地址。

模块参数[modul]如下:

常见的模块参数:主要是定义服务器哪个要被同步输出,其格式必须为“ [ 共享模块名 ]” 形式,这个名字就是在 rsync 客户端看到的名字,服务器真正同步的数据是通过 path 来指定的。

Comment : # 给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。 默认没有描述定义。

Path : # 指定该模块的供备份的目录树路径,该参数是必须指定的。

read only : # yes为只允许下载,no为可以下载和上传文件到服务器。

exclude : # 用来指定多个由空格隔开的多个文件或目录(相对路径),将其添加到exclude列表中。 这等同于在客户端命令中使用―exclude或----filter来指定某些文件或目录不下载或上传。

exclude from : # 指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义, 每个文件或目录需要占用一行。

include : # 用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用--include来指定模式,结合include和exclude可以定义复杂的exclude/include规则。

include from : # 指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。

auth users : # 该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块, 这里的用户和系统用户没有任何关系。 如果" auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在" secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。

secrets file : # 该选项指定一个包含定义用户名:密码对的文件。 只有在" auth users"被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,注意:该文件的权限一定要是600,否则客户端将不能连接服务器。

hosts allow : # 指定哪些IP的客户允许连接该模块。定义可以是以下形式: 单个IP地址,例如:192.167.0.1,多个IP或网段需要用空格隔开,整个网段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0,“*”则表示所有,默认是允许所有主机连接。

hosts deny : # 指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。 默认是没有hosts deny定义。

list : # 该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。 如果设置该选项为false,可以创建隐藏的模块。默认值是true。

timeout :# 通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。

ignore errors :   # 忽略I/P不正确 。

ignore nonreadable : # 忽略对用户没有可读的文件。



Tags:rsync   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
抛弃 scp 改用 rsync,让 Linux 下文件传输高效无比
我们都使用过 scp 来传输文件。当传输在中途或甚至在 99% 时被中断时,我们都会诅咒不已(每当我想起99%的中断传输时,我的心都很痛);让我们看看如何使用 rsync 来替代 scp,避免这样...【详细内容】
2023-08-02  Search: rsync  点击:(569)  评论:(0)  加入收藏
一篇文章学会数据备份利器rsync
阿铭linux近16年的IT从业经验,6年+鹅厂运维经验,6年+创业公司经验,熟悉大厂运维体系,有从零搭建运维体系的实战经验。关注我,学习主流运维技能,让你比别人提升更快,涨薪更多!作为...【详细内容】
2023-01-16  Search: rsync  点击:(306)  评论:(0)  加入收藏
Linux安装rsync和inotify实现文件夹实时同步
需求说明在web服务器中,作为代码发布机A,文件同步到服务器B,C,D等集群中,可以忽略某个文件和目录。A服务器:内网IP: 192.168.1.2B服务器:内网IP: 192.168.1.3A和B的www用户,或者roo...【详细内容】
2022-05-25  Search: rsync  点击:(425)  评论:(0)  加入收藏
Linux中使用rsync数据备份工具和实例
对于运维不得不得做的就是备份,增量备份与全量备份,通过rsync工具可以快速做到远程备份。rsync的应用: 1.备份文件 2.全量备份 3.增量备份。 通过rsync+inotify实时同步文件。...【详细内容】
2022-05-24  Search: rsync  点击:(375)  评论:(0)  加入收藏
Linux搭建rsync备用服务器,及配置文件详解
rsync官方网址:https://rsync.samba.org/一:rsync介绍rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份工具。在守护进程模式(daemon mode)下,rs...【详细内容】
2022-02-25  Search: rsync  点击:(442)  评论:(0)  加入收藏
lsyncd实时同步搭建指南——取代rsync+inotify
1. 几大实时同步工具比较1.1 inotify + rsync最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify + rsync,但随着文件数量的增大到100W+,目录下的文件列表就达...【详细内容】
2021-05-19  Search: rsync  点击:(439)  评论:(0)  加入收藏
linux之间传文件命令之Rsync傻瓜式教程
1. 前言linux之间传文件命令用什么命令?本文介绍一种最常用,也是功能强大的文件同步和传输工具Rsync,本文提供详细傻瓜式教程。在本教程中,我们将通过实际使用案例和最常见的rsy...【详细内容】
2020-09-17  Search: rsync  点击:(481)  评论:(0)  加入收藏
scp 用户的 rsync 迁移指南
OpenSSH 项目表示,他们认为 scp 协议已经过时,不灵活,而且不容易修复,然后他们继而推荐使用 sftp 或 rsync 来进行文件传输。• 来源:linux.cn • 作者:Chasinglogic &bu...【详细内容】
2020-09-03  Search: rsync  点击:(289)  评论:(0)  加入收藏
文件增量同步之rsync算法
前言之前毕设有用到文件增量同步,于是乎就记录一下。场景在A和B两个不同端之间有相似度很高的文件,同时这个文件又比较大。如果通过全量传输来更新,http传输量很大,非常不友好。...【详细内容】
2020-08-28  Search: rsync  点击:(631)  评论:(0)  加入收藏
rsync实现 linux与windows备份同步
1、准备好系统环境与软件:这里使用的linux是centos 7.8,如下:查linux版本windows使用的是win10。Rsync 服务端linux使用的是3.1.2:rsync版本linux端可以使用yum install -y rsyn...【详细内容】
2020-08-04  Search: rsync  点击:(600)  评论:(0)  加入收藏
▌简易百科推荐
为什么Nginx被称为“反向”代理呢?
Nginx(发音为"engine-x")是一款高性能、轻量级的开源Web服务器软件,也可用作反向代理服务器、负载均衡器和HTTP缓存。Nginx之所以有被称为“反向”代理,是因为它充当客户端设备...【详细内容】
2024-02-01  coderidea  微信公众号  Tags:Nginx   点击:(61)  评论:(0)  加入收藏
哪种服务器操作系统更好呢?
在当今的IT世界中,服务器操作系统扮演着至关重要的角色。它们是确保服务器能够高效、安全地运行的关键因素。然而,对于许多人来说,服务器操作系统的种类和特点可能是一个复杂的...【详细内容】
2024-01-30    简易百科  Tags:操作系统   点击:(80)  评论:(0)  加入收藏
什么是VPS服务器
VPS服务器是一种虚拟化技术,它将一台物理服务器划分为多个虚拟的独立服务器,每个虚拟服务器都可以拥有自己的操作系统、运行环境、应用程序等。这种技术使得每个虚拟服务器可...【详细内容】
2024-01-30    简易百科  Tags:VPS服务器   点击:(73)  评论:(0)  加入收藏
VPS服务器下载速度慢?这五招帮你提速
VPS服务器下载速度慢可能会让用户感到沮丧,尤其是对于需要大量下载和上传数据的用户。幸运的是,有一些方法可以帮助您提高VPS服务器的下载速度,使您的在线体验更加顺畅。在本文...【详细内容】
2024-01-30  IDC行业观察者    Tags:VPS服务器   点击:(60)  评论:(0)  加入收藏
美国VPS和英国VPS:地理位置对服务器性能的影响
在今天的数字时代,VPS已成为在线业务和网站托管的关键组成部分。然而,选择合适的VPS主机服务时,地理位置通常被忽视,尽管它对服务器性能有着重要的影响。本文将探讨美国VPS和英...【详细内容】
2024-01-26  IDC行业观察者    Tags:服务器   点击:(56)  评论:(0)  加入收藏
如何判断服务器所需带宽:基于业务需求和流量模式的关键考量
在选择服务器时,带宽是一个重要的考虑因素。带宽的大小直接影响到网站的加载速度和用户的访问体验。那么,如何判断服务器需要多大的带宽呢?本文将为你揭示这一关键问题的答案...【详细内容】
2024-01-26  源库科技    Tags:服务器   点击:(78)  评论:(0)  加入收藏
服务器内存空间及IO操作原理解析
服务器的内存空间分为内核空间和用户空间,而我们编写的程序通常在用户空间中运行。在进行读写操作时,我们直接操作的是用户缓冲区,而用户缓冲区的内容来自于内核缓冲区。这种内...【详细内容】
2024-01-23  王建立    Tags:服务器   点击:(45)  评论:(0)  加入收藏
如何在Java环境中安装Nginx?
1. 下载Nginx:首先,前往Nginx官方网站(https://nginx.org/en/download.html)下载新版本的Nginx。选择适合您操作系统的版本,通常有Windows、Linux和Mac等不同操作系统的版本可供...【详细内容】
2024-01-22  敲代码的小动    Tags:Nginx   点击:(69)  评论:(0)  加入收藏
服务器证书和SSL证书有啥区别?
在互联网经济时代,随着越来越多的信息以及合作都是从企业官网开始的,因此绝大多数企业都会为自己的网站配置SSL证书,以提高安全性。在接触SSL证书时,也有很多人称之为服务器证书...【详细内容】
2024-01-10  安信SSL证书    Tags:服务器证书   点击:(66)  评论:(0)  加入收藏
宝塔面板怎样部署java项目?
宝塔面板怎样部署java项目?在使用宝塔面板部署Java项目之前,需要确保已经安装了Java Development Kit (JDK)。接下来,将介绍如何使用宝塔面板来部署Java项目的步骤。步骤一:安装...【详细内容】
2024-01-09  西部数码    Tags:宝塔面板   点击:(119)  评论:(0)  加入收藏
站内最新
站内热门
站内头条