zoukankan      html  css  js  c++  java
  • rsync数据同步方式-002

    一、rsync数据同步方式

    SYNOPSIS

    (1)本地数据同步方式

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

    (2)远程数据同步方式

    Access via remote shell:

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

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

    (3)守护进程方式同步数据

    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

    1、本地数据同步方式(类似于cp)

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

    实例:将/etc/hosts文件复制到/tmp下

    [root@backup ~]# rsync  /etc/hosts /tmp/
    [root@backup ~]# ls /tmp/hosts
    /tmp/hosts

    2、远程数据同步方式(类似于scp)---又称为隧道传输

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

    说明:需要进行交互传输数据。如果想实现免交互传输数据,需要借助ssh+key方式实现

    实例一:【实践操作】pull拉(将远程服务器上的文件拉取到本地)

    从远端拉文件到当前目录

    [root@nfs01 ~]# touch /tmp/1.txt
    [root@backup ~]# rsync nfs01:/tmp/1.txt .
    root@nfs01's password:
    [root@backup ~]# ll
    total 44
    -rw-r--r--  1 root root     0 Oct 11 16:16 1.txt

    实例二:【实践操作】push推(将本地文件传输到远程服务器上)

    将本地的hosts文件推到远端服务器上

    [root@backup tmp]# ll
    total 4
    -rw-r--r-- 1 root root 357 Oct 11 15:12 hosts

    (1)使用push的格式 推整个目录(包括目录)

    [root@backup tmp]# rsync -r /tmp nfs01:/tmp/
    root@nfs01's password:
    [root@nfs01 tmp]# ll
    total 4
    drwxr-xr-x 3 root root 4096 Oct 11 16:20 tmp

    (2)推整个目录下的文件(不包括目录本身)

    [root@backup tmp]# rsync -r /tmp/ nfs01:/tmp/
    root@nfs01's password:
    [root@nfs01 tmp]# ll
    total 8
    -rw-r--r-- 1 root root  357 Oct 11 16:21 hosts
    drwxr-xr-x 3 root root 4096 Oct 11 16:20 tmp

    说明:

    /tmp   --表示将tmp目录本身及目录下的内容进行传输

    /tmp/  --表示只传输tmp目录下面的内容信息

    3、守护进程方式同步数据

    [root@localhost ~]# uname -a
    Linux 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
    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

    (1)配置rsync守护进程方式(需要有服务端与客户端)

    说明:

    01、backup服务器作为rsync的服务端

    02、以rsync客户端作为参照物,将数据推到rsync服务器上

    (2)配置rsync服务端(将服务端配置到backup服务器上)

    01、软件是否存在,不存在请yum安装即可

    [root@backup ~]# rpm -qa |grep rsync
    rsync-3.0.6-12.el6.x86_64

    02、进行软件服务配置

    [root@backup ~]# vim /etc/rsyncd.conf
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 200
    timeout = 300
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    ignore errors
    read only = false
    list = false
    hosts allow = 172.16.1.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    [backup]
    comment = "backup dir by clsn"
    path = /backup

    03、创建rsync用户

    [root@backup ~]# id rsync
    id: rsync: No such user
    [root@backup ~]# useradd -s /sbin/nologin -M rsync

    04、创建数据备份存储目录,目录修改属主

    [root@backup ~]# mkdir /backup/
    [root@backup ~]# chown -R rsync.rsync /backup/

    05、创建认证用户密码文件

    [root@backup ~]#echo "rsync_backup:clsn123" >>/etc/rsync.password
    [root@backup ~]#chmod 600 /etc/rsync.password

    06、启动rsync服务

    [root@backup ~]#rsync --daemon

    07、至此服务端配置完成

    [root@backup ~]# ps -ef |grep rsync
    root       2076      1  0 17:05 ?        00:00:00 rsync --daemon
    root       2163   1817  0 17:38 pts/1    00:00:00 grep --color=auto rsync
    [root@backup ~]# netstat -lntup |grep rsync
    tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      2076/rsync        
    tcp        0      0 :::873                      :::*                        LISTEN      2076/rsync

    (3)配置rsync客户端(其他服务器为客户端)

    01、软件是否存在

    [root@nfs01 ~]# rpm -qa |grep rsync
    rsync-3.0.6-12.el6.x86_64

    02、创建认证用户密码文件

    客户端的认证文件只需要有密码即可

    [root@nfs01 ~]# echo "clsn123" >>/etc/rsync.password
    [root@nfs01 ~]# chmod 600 /etc/rsync.password

    03、实现数据传输

    001、交互式

    [root@nfs01 ~]# rsync -avzP /etc/hosts rsync_backup@172.16.1.41::backup
    Password:
    sending incremental file list
    hosts
             357 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)
     
    sent 63 bytes  received 33 bytes  9.14 bytes/sec
    total size is 357  speedup is 3.72

    002、免交互式

    [root@nfs01 ~]# rsync -avzP /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    sending incremental file list
    hosts
             357 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)
     
    sent 199 bytes  received 27 bytes  150.67 bytes/sec
    total size is 357  speedup is 1.58

    二、特殊参数实践

    三、rsync命令同步参数选项

     
     
     
     

    目录参数

    参数说明

    -v ,--verbose

    详细模式输出,传输时的信息

    -z,--compress

    传输时进行压缩以提高传输效率

    --compress-level=NUM 可按级别压缩

    局域网可以不用压缩

    -a,--archive (主要)

    归档模式,表示以递归方式传输文件,并保持文件属性。等于 -rtopgDl

    -r,--recursive   归档于-a

    对子目录以递归模式,即目录下的所有目录都同样传输。小写r

    -t,--times       归档于-a

    保持文件时间信息

    -o,--owner       归档于-a

    保持文件属主信息

    -p,--perms       归档于-a

    保持文件权限

    -g,--group       归档于-a

    保持文件属组信息

    -P,--progress

    显示同步的过程及传输时的进度等信息(大P)

    -D,--devices     归档于-a

    保持设备文件信息

    -l,--links       归档于-a

    保留软连接(小写字母l)

    -e,--rsh=COMMAND

    使用的信道协议(remote shell),指定替代rsh的shell程序。

    例如 ssh

    --exclude=PATTERN

    指定排除不需要传输的文件信息

    --exclude-from=file

    文件名所在目录文件,即可以实现排除多个文件

    --bwlimit=RATE

    限速功能

    --delete

    让目标目录SRC和源目录数据DST一致,即无差异数据同步

    保持同步目录以及文件属性:

    1)这里的-avzP相当于 -vzetopdDIP,生产环境常用参数为-avzp

    2)在脚本中可以报-vP去掉

    3--progress可以用-P代替

    让目标目录SRC和源目录数据DST一致,即无差异数据同步

    daemon启动扩展参数

    --daemon

    daemon表示以守护进程的方式启动rsync服务。

    --address

    绑定指定IP地址提供服务。

    --config=FILE

    更改配置文件路径,而不是默认的/etc/rsyncd.conf

    --port=PORT

    更改其它端口提供服务,而不是缺省的873端口

  • 相关阅读:
    搭建appium的android环境
    SonarQube的安装、配置与使用
    使用jsonpath解析json内容
    浅析selenium的page object模式
    java读取word内容
    Java之XML操作:从XML中直接获取数据
    Java之指定Junit测试方法的执行顺序举例
    Mybatis之执行自定义SQL举例
    SpringBoot之处理JSON数据举例
    Mybatis之执行insert、update和delete操作时自动提交
  • 原文地址:https://www.cnblogs.com/bazingafraser/p/8581333.html
Copyright © 2011-2022 走看看