Rsync远程同步

1.备份的基础概念知识

  1.什么是备份?

    备份就是把自己认为重要的文件复制一份存放起来 (给源文件增加一个 副本)

  2.为什么要备份?

    数据比较重要

    防止出现故障(软件故障 认为故障占比80%) 能保证快速恢复整个系统的运转

  3.能不能不备份?

    可以 对于自己绝对不重要的文件  可以不备份

  4.备份通常使用什么工具?

    本地备份  cp

    远程备份  scp  rsync

  

2.什么是rsync

    rsync简称远程同步 可以实现不同主机之间的同步 同时支持增量和全量的备份

      不同主机  windows-->linux  linux-->linux  macos-->linux macos-->windows

 

3.rsync是如何实现的备份

    全量:完全备份 效率低

    增量:差异备份 效率高

 

4.rsync使用场景

    rsync数据传输模式:push推   lull拉

      推(上传):客户端将需要备份的文件发送到服务器

      拉(下载):客户端从服务端下载需要的文件

    rsync数据传输模式-->问题

      推(下载):如果机器过多 容易造成推送数据缓慢

      拉(下载):如果客户端过多 会造成服务端压力过大

    比如:现在有20台计算机 怎么有效的缓解推送和拉取问题

      多服务器使用场景

      异地备份

 

5.rsync传输模式

    三种传输模式:

      1.本地传输  cp

      2.远程传输  scp

      3.守护进程  进程放在后台运行--->进程

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

        命令 选项      源文件    目标位置

PS:不支持推送和拉取 单纯的复制  cp命令本地备份是覆盖形式而 rsync是差异形式

 

  Access via remote shell: (基于ssh协议)

  文件

    上传  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

    [root@nfs ~]# tsync -avz ./lisong.txt root@172.16.1.41:/opt/

    推送本地文件至172.16.1.41服务器的/opt目录下 使用41的root用户完成此操作

    下载  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

    [root@nfs ~]# rsync -avz root@172.16.1.41:/opt/lisong.txt ./

    下载172.16.1.41服务器opt目录下的lisong.txt文件至本地当前目录使用root用户完成此操作

 

  目录

    上传  

    1.[root@nfs ~]# rsync -avz /etc/ root@172.16.1.41:/opt

    推送etc下面的所有文件到172.16.1.41服务器的opt目录下

    2.[root@nfs ~]# rsync -avz /etc root@172.16.1.41:/opt

    推送etc整个目录到172.16.1.41服务器的opt目录下

 

  例:nfs推送/etc目录到backup服务器上面名字叫(etc-nfs-172.16.1.31-今天时间)

    rsync -avz /etc root@172.16.1.99:/root/etc-nfs-172.16.1.31-$(date +%F)

    web推送/etc目录到backup服务器上面名字叫(etc-web-172.16.1.7)

    rsync -avz /etc root@172.16.1.99:/root/etc-web-172.16.1.7

 

下载:远程同步弊端

  1.需要使用系统的用户

    root 权限太高

    普通用户 权限不足

 

6.守护进程 将程序运行在后台

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

 

  安装

    yum install -y rsync

  配置

    查询配置文件:rpm -qc rsync

      /etc/rsyncd.conf
      /etc/sysconfig/rsyncd

    编写配置文件:vim /etc/rsyncd.conf

      加入以下配置

        uid = rsync
        gid = rsync
        port = 873
        fake super = yes
        use chroot = no
        max connections = 200
        timeout = 600
        ignore errors
        read only = false
        list = false
        auth users = rsync_backup
        secrets file = /etc/rsync.passwd
        log file = /var/log/rsyncd.log
        #####################################
        [backup]
        comment = welcome to oldboyedu backup!
        path = /backup

 

    解释:

      配置详解

      uid = rsync                          # 运行进程的用户
      gid = rsync                        # 运行进程的用户组
      port = 873                            # 监听端口
      fake super = yes                  # 无需让rsync以root身份运行,允许接收文件的完整属性
      use chroot = no                          # 禁锢推送的数据至某个目录, 不允许跳出该目录
      max connections = 200              # 最大连接数
      timeout = 600                        # 超时时间
      ignore errors                       # 忽略错误信息
      read only = false                    # 对备份数据可读写
      list = false                         # 不允许查看模块信息
      auth users = rsync_backup        # 定义虚拟用户,作为连接认证用户
      secrets file = /etc/rsync.passwd # 定义rsync服务用户连接认证密码文件路径
      [backup]                      # 定义模块信息
      comment = commit             # 模块注释信息
      path = /backup               # 定义接收备份数据目录

 

  1.需要创建一个rsync进程运行时使用的普通用户---->rsync

      useradd rsync -M -s /sbin/nologin

      -M 不创建家目录

      -s  指定用户的登录方式

  2.服务端需要定义一个客户端链接时的虚拟用户和密码

      echo "rsync_backup:123456" > /etc/rsync.passwd

      chmod 600 /etc/rsync.passwd

      此文件必须是600权限

  3.准备模块定义好的目录 客户端的数据都存放在该目录下

      mkdir /backup

      chomn -R rsync.rsync /backup/

  4.启动rsync并加入开机自启

      systemctl start rsyncd

      systemctl enable rsyncd

      systemctl status rsync

  5.检查rsync的进程\端口

      pa aux | grep rsync

      netstat -lntp | grep 873

  6.客户端测试

      backup属于服务端--->百度网盘

      nfs属于客户端--->PC电脑

 

  推送数据:
   Push: rsync [OPTION...] SRC... [USER@]HOST:DEST    #远程连接方式:路径
   Push: rsync [OPTION...] SRC... [USER@]HOST::DEST   #守护进程方式::模块名称rsync -          

     avz lisong.txt rsync_backup@172.16.1.99::backup

       将客户端的lisong.txt推送到99服务器的backup模块下 使用rsync_backup虚拟用户认证

  下载数据:

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

     rsync -avz rsync_backup@172.16.1.99::backup/lisong.txt ./

     将服务端的backup模块下的lisong.txt文件下载到本地的当前目录下使用虚拟用户认证

     rsync -avz rsync_backup@172.16.1.99::backup ./

     将服务器的backup模块下的所有文件下载到本地的当前目录使用虚拟用户认证

 

1.无差异同步

     客户端---->push--->服务端   以客户端为准

     rsync -avz /root/ rsync_backup@172.16.1.99::backup

     上传root目录下的所有文件到99服务器的backup模块下

     rsync -avz /root/ --delete rsync_backup172.16.1.99::backup

     上传root目录下的所有文件到99服务器的backup模块下并保持服务器的文件与客户端一致

      客户端--->pull--->服务端   以服务端为准

     rsync -avz rsync_backup@172.16.1.41::backup ./

     下载99服务器上面backup模块下的所有文件到当前目录下

     rsync -avz --delete rsync_backup@172.16.1.41::backup ./

     下载99服务器上面backup模块下的所有文件到当前目录下并保持文件与服务端一致

 

2.对同步进行限速100MB * = 800兆 --dwlimit MB * 8 = 实际带宽100MB

  模拟环境创建一个大小500M的文件

    dd if=/dev/zero of=./size.disk bs=1M count=500

  测试

    rsync -avzP --bwlimit 1 ./size.disk rsync_backup@172.16.1.99::backup

    -P 显示传输速度

    传输指定文件到99服务器的backup模块下限制传输速度为1MB

 

3.排除不同的文件

  使用命令:--exclude=          #指定某个文件

       --exclude-from   #指定某个文件里面要排除的文件

  rsync -avz /root/ --exclude=size.disk rsync_backup@172.16.1.99::backup

  上传root目录下的所有文件到99服务器的backup模块下并排除size.bisk文件

  rsync -avz /root/ --exclude-from peichu.txt rsync_backup@172.16.1.99::backup

  上传root目录下的所有文件到99服务器的backup模块下并排除peichu.txt文件里面写的文件名

 

4.客户端免密传输

  方式一:--password-file

  模拟环境创建:

  echo "123456" > /etc/rsync.pass

  chmod 600 /etc/rsync.pass

  测试:

  rsync -avz /root/ rsync_backup@172.16.1.99::backup --password-file=/etc/rsync.pass

  传输root目录下的所有文件到99服务器的backup模块下 指定密码文件位置实现免密传输

  方式二:export RSYNC_PASSWORD="密码"  只在本中断生效"临时生效"

  rsync -avz /root/ rsync_backup@172.16.1.99::backup

  传输root目录下的所有文件到99服务器的root目录下通过上面指定的密码实现临时免密传输

  

7.rsync相关参数:
 -a           #归档模式传输, 等于-tropgDl
 -v           #详细模式输出, 打印速率, 文件数量等
 -z           #传输时进行压缩以提高效率
 -r           #递归传输目录及子目录,即目录下得所有目录都同样传输。
 -t           #保持文件时间信息
 -o           #保持文件属主信息
 -p           #保持文件权限
 -g           #保持文件属组信息
 -l           #保留软连接
 -P           #显示同步的过程及传输时的进度等信息
 -D           #保持设备文件信息
 -L           #保留软连接指向的目标文件
 -e           #使用的信道协议,指定替代rsh的shell程序
 --exclude=PATTERN   #指定排除不需要传输的文件模式
 --exclude-from=file #文件名所在的目录文件
 --bwlimit=100       #限速传输
 --partial           #断点续传
 --delete            #让目标目录和源目录数据保持一致

posted @ 2019-05-26 18:25  熊猫。  阅读(1766)  评论(0编辑  收藏  举报