linux---集群架构初探(3)搭建backup服务器之rsync

RSYNC---Remote Synchronization(远程同步)

开源、高速的数据同步工具。

基本语法格式:rsync [选项] 源文件 目标文件  (更新的是后面的目标文件)

常用选项:

-a 包含-rtplgoD
-r 递归recursive,类似cp时的-r选项
-d 不递归转移目录 -v 同步时显示一些信息,让我们知道同步的过程 -l 保留软连接 -L 加上该选项后,同步软链接时会把源文件给同步 -p 保持文件的权限属性 -o 保持文件的属主 -g 保持文件的属组 -D 保持设备文件信息 -t 保持文件的时间属性 --delete 删除目标多出的文件或文本内容(必须和-r或-d结合使用),同时会增加目标缺少的部分(使两者保持一致) --exclude 过滤指定文件,如--exclude=logs 会把文件夹logs的文件或者目录过滤掉,不同步
--exclude-from 根据文件内容过滤,如想过滤两个文件可以写成 --exclude=a --exclude=b,也可以
        将a和b写入文件1.txt中,--exclude-from=1.txt -P 显示同步过程,比如速率,比-v更加详细 -u 加上该选项后,如果DEST中的文件比SRC新,则不同步 -z 传输时压缩
-e 指定传输通道(协议)
-q quiet,无提示拷贝
--partial 断点续传
--partial-dir=路径 指定一个目录保存断点续传的文件,文件整体传输结束后会将其删除(总体上速度更快)
--bwlimit=KMPS 指定最大传输速率为每秒多少KB,以免同步服务占用全部带宽,使用户无法正常访问服务器

注意:对于rsync命令,data 代表该目录和目录下内容,data/ 只是目录下的内容,不包含自身。

rsync服务的默认端口号是873.

rsync的功能特性

支持拷贝普通文件与特殊文件,如链接文件,设备文件等

支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。

可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变

可实现增量复制(删除),即只复制(删除)发生变化的数据,因此数据传输效率很高。

可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件( rsync本身不对数据加密)

可以通过 socket(进程方式)传输文件和数据(服务端和客户端)*。

支持匿名或认证(无需系统用户)进程模式传输,安全的进行数据备份及镜像。

注:增量复制即将源和目标做对比,只复制多出来的或发生变化的文件。(可以用参数控制)

三种工作模式

1.本地拷贝

①把数据复制到指定位置,类似于cp

②使用参数实现删除的功能,类似于rm

③查看属性信息功能,类似于ls

例:

2.异地拷贝

将一台机器的数据复制到另一台机器。

远程shll模式

借助类似ssh隧道传输数据,适合不同的机器之间复制。

pull:拉,从远端拉取到本地。

rsync  [OPTION]        [USER]@HOST:SRC            [DEST]

       选项    认证用户@主机地址:源路径      本地路径

push:推,从本地推到远端。

rsync  [OPTION]        SRC            [USER]@HOST:[DEST]

          选项      本地路径  认证用户@主机地址:目标路径     

注:第一次传输时会提示输入yes即可。要求输入对方的密码。

默认使用的是ssh 22端口,如果ssh服务端口号更改为8888,应这样写:

rsync -avz /etc/hosts -e "ssh -p 8888" root@nfs01:/opt/

3.rsync守护进程模式(重点)

首先要搭建rsync服务端(要有守护进程),然后才能在客户端实现推拉数据。

是企业运维的重要模式。

实践:

一、以下在服务端配置

1.安装rsync命令:yum install rsync

2.设置rsync配置文件

注:客户端执行命令时用的是模块名(不用加中括号),对应的就是path的路径

创建用户和目录并赋予权限

3.启动和检查

查看服务状态:systemctl status rsyncd

设置开机启动:systemctl enable rsyncd

 4.配置密码文件

注意:这里的密码文件路径、用户名必须和第2步里的配置文件一致。

二、以下在客户端配置(以nfs01为例)

1.打开nfs01服务器

2.配置(两种方法)

第1种方法:配置密码文件

注:这里只需将密码写入即可。

第2种方法:配置环境变量

三、守护进程模式,客户端rsync命令语法

原则:服务器端运行守护进程,客户端执行同步命令。

注:和异地拷贝的推拉有一些不同

pull:拉,从远端拉取到本地

语法1:

rsync  [OPTION]        [USER]@HOST::SRC            [DEST]

       选项    虚拟用户@主机地址::模块名      本地路径

语法2:

rsync  [OPTION]        rsync://[USER]@HOST//SRC            [DEST]

       选项    rsync://虚拟用户@主机地址//模块名      本地路径

push:推,从本地推到远端。

方法1:

rsync  [OPTION]        SRC            [USER]@HOST::[DEST]

          选项      本地路径  虚拟用户@主机地址::模块名   

方法2:

rsync  [OPTION]        SRC            rsync://[USER]@HOST//[DEST]

          选项      本地路径  rsync://虚拟用户@主机地址//模块名  

测试:

原因是服务器端用户rsync没有权限存储文件的完整属性,可以将配置文件/etc/rsyncd.conf中的uid和gid都改为root,或者加一行:fake super = yes  代表不用root用户也有权限存储文件的完整属性。

man rsyncd.conf 对fake super的解释:This allows the full attributes of a file to be stored without having to have the daemon actually running as root.

更改完成后,测试:

注:如果客户端环境变量RSYNC_PASSWORD配置好了,那么--password-file=/etc/rsync.password可以不用写。

四、多目录共享

可以在/etc/rsyncd.conf中设置多个模块名,使客户端可以向多个目录共享文件。

注:要一一对应,一个模块一个path,顺序不要乱。也可以将虚拟用户名、密码文件等放在模块后面,使其私有化,即只服务这个模块。意思就是[backup]和[test]中间的内容只服务于模块backup,以此类推。

服务器端创建目录并设置权限

客户端进行传输

检查服务器端是否收到文件

posted @ 2020-05-31 14:18  盗哥泡茶去了  阅读(266)  评论(0编辑  收藏  举报