美文网首页
Rsync数据复制软件应用实践

Rsync数据复制软件应用实践

作者: linux_阿杰 | 来源:发表于2020-01-13 17:52 被阅读0次

    实验需要两台虚拟机
    如不会安装请参考https://www.jianshu.com/p/9f3eb5139d18
    添加一块内网卡,先自行百度添加

    Rsync介绍

    什么是rsync?

    Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。Rsync软件适用于unix/linux/windows等多种操作系统平台。
    Rsync是一个快速和非常通用的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制。它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。它以其delta-transfer算法闻名。
    rsync监听端口:873
    rsync运行模式:C/S

    Rsync的功能

    ①支持拷贝普通文件与特殊文件,如链接文件,设备文件。
    ②支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
    ③可以做到保持原文件或目录的权限,时间,软硬链接,属主,组等所有属性均不改变。
    ④可实现增量复制,即只复制发生变化的数据,因此数据传输效率很高。
    ⑤可以使用rcp,rsh,SSH等方式来配合进行隧道加密传输文件
    ⑥可以通过socker传输文件和数据
    ⑦支持匿名或认证进程模式传输,安全地进行数据备份及镜像。

    rsync工作方式介绍与实践

    rsync有三种传输数据模式,具体介绍如下:
    1.本地传输
    类似cp 可实现文件目录移动备份
    2.远程shell数据传输模式
    远程shell数据传输模式一般是借助通道如ssh 在两台服务器之间进行复制数据,和两台服务器是对等的,没有客户端与服务端之分,整个过程类似与scp远程复制命令
    3.守护进程传输模式
    守护进程传输模式是在客户端与服务器之间进行数据复制,通常需要服务器端部署守护进程服务,然后在客户端执行命令,实现数据的拉取和推送复制。

    本地数据传输模式

    rsync [option] src [dest]
    rsync 参数选项 源文件或文件 目的目录或文件
    rsync #命令
    [OPTION...] #选项
    SRC... #远程主机模块(不是目录)
    [USER@] #远程主机用户(虚拟用户)
    HOST:: #远程主机地址
    [DEST] #将远程主机模块备份至本地什么位置
    -a #归档模式传输, 等于-tropgDl
    -v #详细模式输出, 打印速率, 文件数量等
    -z #传输时进行压缩以提高效率
    -r #递归传输目录及子目录,即目录下得所有目录都同样传输。
    -t #保持文件时间信息
    -o #保持文件属主信息
    -p #保持文件权限
    -g #保持文件属组信息
    -l #保留软连接
    -P #显示同步的过程及传输时的进度等信息
    -D #保持设备文件信息
    -L #保留软连接指向的目标文件
    -e #使用的信道协议,指定替代 rsh 的 shell 程序
    --exclude=PATTERN #指定排除不需要传输的文件模式
    --exclude-from=file #文件名所在的目录文件
    --bwlimit=100 #限速传输
    --delete #让目标目录和源目录数据保持一致
    

    (1) 本地复制(类似cp)
    案例一:使用rsync实现本地文件的复制

    root@backup ~#: cd /tmp
    root@backup tmp#: ls
    root@backup tmp#: rsync /etc/passwd /tmp/
    root@backup tmp#: ls
    passwd
    

    案例二:使用rsync实现本地目录复制

    root@backup tmp#: mkdir oldboy
    root@backup tmp#: touch oldboy/{1..5}.txt
    root@backup tmp#: ls oldboy/{1..5}.txt
    oldboy/1.txt  oldboy/2.txt  oldboy/3.txt  oldboy/4.txt  oldboy/5.txt
    root@backup tmp#: rsync -r oldboy /root/
    root@backup tmp#: cd
    root@backup ~#: ls
    oldboy
    root@backup ~#: ls oldboy/
    1.txt  2.txt  3.txt  4.txt  5.txt
    

    (2) 查询数据(类似ls)

    root@backup tmp#: rsync /etc/hosts
    -rw-r--r--            158 2013/06/07 22:31:32 hosts
    root@backup tmp#: rsync oldboy/
    drwxr-xr-x             71 2020/01/13 16:15:21 .
    -rw-r--r--              0 2020/01/13 16:15:21 1.txt
    -rw-r--r--              0 2020/01/13 16:15:21 2.txt
    -rw-r--r--              0 2020/01/13 16:15:21 3.txt
    -rw-r--r--              0 2020/01/13 16:15:21 4.txt
    -rw-r--r--              0 2020/01/13 16:15:21 5.txt
    

    远程shell数据传输语法

    远程分为推拉两种
    拉取

    rsync [option] user@host:src [dest]
    rsync 参数选项 认证用户@主机地址:源路径 本地路径

    推送

    rsync [option] [dest] user@host:src
    rsync 参数选项 本地路径 认证用户@主机地址:源路径

    数据传输实践
    实践一:拉取模式 从远程服务端把/etc/hosts 复制到本地/tmp

    root@backup ~#: rsync -av -e 'ssh -p 22' root@172.16.1.31:/etc/hosts /root
    root@172.16.1.31's password: 
    receiving incremental file list
    hosts
    
    sent 43 bytes  received 243 bytes  81.71 bytes/sec
    total size is 158  speedup is 0.55
    root@backup ~#: ls
    hosts  oldboy
    

    实践二:推送模式 把本地服务器/etc/passwd 复制到远程主机的/root下

    root@backup ~#: rsync -av /etc/passwd root@172.16.1.31:/root
    root@172.16.1.31's password: 
    sending incremental file list
    passwd
    
    sent 1,187 bytes  received 35 bytes  349.14 bytes/sec
    total size is 1,095  speedup is 0.90
    
    root@nfs ~#: ll
    总用量 4
    -rw-r--r-- 1 root root 1095 1月   3 16:35 passwd
    

    守护进程传输模式

    拉取模式

    rsync [option] user@host:src [dest]
    rsync 参数选项 认证用户@主机地址 端口 / 远端模块名 目的地

    推送模式

    rsync [option] src user@host::dest
    rsync 参数选项 源路径 认证用户 @ 主机地址 :: 远端模块名

    部署前准备工作

    root@backup ~#: cat /etc/redhat-release 
    CentOS Linux release 7.7.1908 (Core)
    root@backup ~#: uname -r
    3.10.0-1062.el7.x86_64
    root@backup ~#: uname -m
    x86_64
    root@backup ~#: rpm -qa rsync
    rsync-3.1.2-6.el7_6.1.x86_64
    

    主机信息

    主机名 网卡eth0 网卡eth2 用途
    nfs 10.0.0.31/24 172.16.1.31/16 NFS存储服务器
    backup 10.0.0.41/24 172.16.1.41/16 rsync存储服务器

    配置rsyncd.conf

    root@backup ~#: vim /etc/rsyncd.conf 
    
    # /etc/rsyncd: configuration file for rsync daemon mode
    
    # See rsyncd.conf man page for more options.
    
    # configuration example:
    
      uid = rsync
      gid = rsync
      fake super = yes
      use chroot = no
      max connections = 200
      timeout = 900
      pid file = /var/run/rsync.pid
      lock file = /var/run/rsync.lock
      log file = /var/log/rsync.log
      ignore errors
      read only = false
      list = false
      host allow = 172.16.1.0/24
      auth users = rsync_backup
      secrets file = /etc/rsync.password
      [backup]
      comment = welcome to oldboyedu backup!
      path = /backup/
    

    配置文件解释

      uid = rsync                            用户名
      gid = rsync                            用户组
      fake super = yes                       允许不已root身份运行,就可以改变文件属性
      use chroot = no                        禁锢推送的数据至某个目录, 不允许跳出该目录
      max connections = 200                  最大连接数
      timeout = 900                          超时时间
      pid file = /var/run/rsync.pid          将进程pid写入此文件
      lock file = /var/run/rsync.lock        指定lock文件用来支持最大连接次数
      log file = /var/log/rsync.log          输入日志信息
      ignore errors                          忽略I/O错误
      read only = false                      上传文件
      list = false                           允许查看可用模块列表
      host allow = 172.16.1.0/24             指定ip
      auth users = rsync_backup              可使用模块
      secrets file = /etc/rsync.password     指定密码存放文件
      [backup]                               模块名
      path = /backup/                        模块对应文件路径
    

    配置用于数据备份的目录
    如果配置文件配置了path=/backup 这里的/backup备份目录默认不存在需创建

    root@backup ~#: useradd rsync -s /sbin/nologin -M    创建用户
    root@backup ~#: mkdir -p /backup                     创建模块对应目录
    root@backup ~#: chown -R rsync.rsync /backup         给目录授权为rsync用户
    

    配置用于rsync复制的账号 密码 及账号文件权限

    root@backup ~#: echo 'rsync_backup:oldboy' >/etc/rsync.password    将账号和密码写入文件
    root@backup ~#: chmod 600 /etc/rsync.password                     文件必须为600权限
    

    启动rsync服务

    systemctl start rsyncd                   启动服务
    systemctl enable rsyncd                  开机自启
    systemctl status rsyncd                  检查启动状态和开机自启动状态
    

    rsync客户端操作

    root@nfs ~#: echo 'oldboy' >/etc/rsync.password            密码必须和服务器相同
    root@nfs ~#: chmod 600 /etc/rsync.password                 授权600
    

    测试数据传输

    推送

    root@nfs ~#: rsync -avzP /etc rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    sending incremental file list
    ······发送内容省略·······
    sent 48,666 bytes  received 655 bytes  98,642.00 bytes/sec
    total size is 27,801,952  speedup is 563.69
    
    root@backup backup#: ls
    etc
    

    拉取

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

    参数选项解释

    -a        保持文件属性
    -z        传输的数据进行压缩
    -P        显示进度信息
    -v        详细传输情况
    

    拓展

    在添加一个模块
    对应模块创建目录
    授权
    在重启服务(每更改一次配置文件就要重启一次)

    报错

    1.检查密码文件权限是否为600
    2.检查配置文件用户属主是否为root,不需要改成普通用户
    3.密码文件是否写错

    相关文章

      网友评论

          本文标题:Rsync数据复制软件应用实践

          本文链接:https://www.haomeiwen.com/subject/xntnactx.html