美文网首页
文件同步rsync

文件同步rsync

作者: 狗狗胖妞 | 来源:发表于2017-11-20 18:02 被阅读54次

    rsync介绍

    我们经常需要在不同目录或者服务器之间做文件同步和更新,LINUX提供了很多内置命令可以使用比如SCP等等,但是今天我们介绍一个更加强大的工具rsync。rsync命令是一个远程同步工具,可以通过LAN\WAN快速同步多台主机间的文件,它使用的就是rsync算法达到本地和远程两个主机之间文件同步,该算法是增量算法,即只同步两个文件的不同部分,而不是每次同步整个文件,所以速度是相当快

    一. 同步源

    1. 基于SSH的同步源

    setfacl
    rsync -avz 用户名@服务器地址:/服务器目录/*  /本地目录/
    

    2. 基于RSYNC的同步源

    /etc/rsyncd.conf
    /etc/rsyncd_users.db    权限为600
    
    上行同步时,read only = no  且 nobody需要有写入权限
    

    /etc/rsyncd.conf文件:

    address = 192.168.0.198
    port 873
    pid file = /var/run/rsyncd.pid
    log file = /var/log/rsync.log
    
    [share]
            comment = soft
            path = /server/rsync
            read only = no
            dont compress = *.gz *.bz *.bz2 *.zip
            auth users = wang
            secrets file = /etc/rsyncd_users.db
    

    对rsyncd.conf文件选项个别解释(上面有的没有写):

    uid 指定当前模块传输文件时的守护进程应该具有的用户ID,默认是"nobody"
    gid 指定当前模块传输文件时守护进程应该具有的用户组ID,默认是"nobody"
    max_connections 指定模块的最大并发连接数量,以保护服务器超过限制的连接请求,将被暂时限制。默认是0,也就是没有限制。

    /etc/rsyncd_users.db文件格式为: wang:123456
    启动rsync守护进程:/usr/bin/rsync --daemon

    权限: 服务权限 --> 用户权限,即只有服务权限还不行,必须还要有用户权限

    rsync命令的用法:
    基本格式: rsync [选项] 原始位置 目标位置

    rsync的命令格式可以为:
      1. rsync [OPTION]... SRC [SRC]... DEST
      2. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
      3. rsync [OPTION]... [USER@]HOST:SRC DEST
      4. rsync [OPTION]... [USER@]HOST::SRC [DEST]
      5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
      6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
      rsync有六种不同的工作模式:
      1. 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
      2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。
      3.使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
      4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
      5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启该模式。
      6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信种工作模式。

    常用选项:
    -a :归档模式,递归并保留对象属性,等同于 -rlptgoD
    -v : 显示同步过程的详细(verbose)信息
    -z : 在传输文件时进行压缩(compress)
    -H : 保留硬连接文件
    -A : 保留ACL属性信息
    --delete : 删除目标位置有而原始位置没有的文件
    --timeout : 指定超时时间
    --progress : 显示备份过程
    --port :指定rsync服务端口
    --password-file :指定客户端的密码文件

    -a ::
    -r : 递归模式,包含文件目录及子目录中所有文件
    -l : 对于符号链接文件仍然复制为符号链接文件
    -p : 保留文件的权限标记
    -t : 保留文件的时间标记
    -g : 保留文件的属组标记(仅超级用户使用)
    -o : 保留文件的属主标记(仅超级用户使用)
    -D : 保留设备文件及其他特殊文件

    二. 实时同步

    免密码验证
    1. 基于SSH的同步源
      通过秘钥对实现
    2. 基于RSYNC同步源
      通过系统变量实现,export RSYNC_PASSWORD=123456

    实时同步 inotify+rsync

    1. 安装inotify-tools辅助工具
      inotifywait :用于持续监控,实时输出结果
      inotifywatch :用于短期监控,任务完成后再出结果

    inotifywait -mrq -e create,delete /server/rsync
    m:持续监控 r:递归监控 即:监控目录及其子目录的内容
    q:简化输出

    2.首先实现免密码验证,在执行下面的脚本文件

    #!/bin/bash
    a="/usr/local/bin/inotifywait -mrq -e create,delete /tmp/test1"
    b="/usr/bin/rsync -avz /tmp/test1/* user1@192.168.0.162:/tmp/test2/"
    $a | while read directory event file   
    do
            $b
    done
    

    三. 双向同步inotify+unison

    windows使用rsync:

    参考文章:https://www.cnblogs.com/janas/p/3321087.html

    相关文章

      网友评论

          本文标题:文件同步rsync

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