zoukankan      html  css  js  c++  java
  • 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,以此类推。

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

    客户端进行传输

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

  • 相关阅读:
    使用node调用支付宝生成支付二维码(沙箱环境)
    nodejs+mysql嵌套查询的问题
    移动端H5开发问题记录
    在jquery中,使用ajax上传文件和文本
    css百分比值到底参考谁?
    vue cli3 + cube-ui 配置rem踩坑记录
    MFC【exe】工程中的文件大致信息(翻译的)
    ActiveX、OLE和COM/DCOM
    系统版本
    图形库
  • 原文地址:https://www.cnblogs.com/1016391912pm/p/12995659.html
Copyright © 2011-2022 走看看