• linux rsync


    rsync

    1. 概念:Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

    2. 作用:用于对两台主机的远程传输文件

    3. 好处(与scp的对比):scp用于远程复制,rsync用于远程备份,

    rsync使用

    1. rsync的配置
    vim etc/rsync.conf
    
    uid = root --rsync运行权限为root
    gid = root --rsync运行权限为root
    use chroot = no --是否让进程离开工作目录
    max connections = 5 --最大并发连接数,0为不限制
    timeout = 600 --超时时间
    pid file = /var/run/rsyncd.pid --指定rsync的pid存放路径
    lockfile = /var/run/rsyncd.lock --指定rsync的锁文件存放路径
    log file = /var/log/rsyncd.log --指定rsync的日志存放路径
    [web1] --模块名称
    path = /data/test/src --该模块存放文件的基础路径
    ignore errors = yes --忽略一些无关的I/O错误
    read only = no --客户端可以上传
    write only = no --客户端可以下载
    hosts allow = 192.168.22.12 --允许连接的客户端主机ip
    hosts deny = * --黑名单,*表示任何主机
    list = yes
    auth users = web --认证此模块的用户名
    secrets file = /etc/web.passwd --指定存放“用户名:密码”格式的文件
    
    1. rsync的连接使用
    rsync -avzP web@192.168.22.11::web1 /data/test/  #命令
    passwd:密码
    
    #此时/data/test/ 下会有a客户机的src文件
      
    
    1. rsync的密码同步

    rsync的密码文件在secrets file中

    # echo "123"> /tmp/rsync.password
    # chmod 600 /tmp/rsync.password
    # rsync -avzP --delete --password-file=/tmp/rsync.password  web@192.168.22.11::web1 /data/test/ --调用密码文件
    
    1. 客户端的自动同步
    # crontab -e
    10 0 * * * rsync -avzP --delete --password-file=/tmp/rsync.password   web@192.168.22.11::web1 /data/test/
    # crontab -l
    

    rsync+inotify-tools 实现数据同步``

    1. inotify-tools
    • 是为linux下 inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件
    • inotify-tools是用c编写的,除了要求内核支持 inotify 外,不依赖于其他
    • inotify-tools提供两种工具:一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数
    1. 安装
    1. 使用:总归另一个终端实现对监控文件的同步数据
    inotifywait -mrq /data -format "%w%f"  -e create,delete,move_to,close_write
    
    1. 编写脚本:
    [root@nfs01 sersync]# vim /server/scripts/inotify.sh
    #!/bin/bash
    inotifywait -mrq /data --format "%w%f" -e create,delete,moved_to,close_write|
    while read line
    do
            rsync -az --delete /var/www/html/ rsync_backup@192.168.200.19::nfsbackup --password-
    file=/etc/rsync.password
    done
    
    #for循环会定义一个条件,当不满足这个条件时,就会停止
    #which循环只要条件满足就会一直循环下去 
    
    • 脚本优化
    #!/bin/bash
    Path=/data
    backup_Server=172.16.1.41
    /usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete /data  | while read line  
    do
        if [ -f $line ];then
            rsync -az $line --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password
        else
            cd $Path &&
            rsync -az ./ --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password
        fi
    done
    
  • 相关阅读:
    题目1.A乘以B
    题目1.A乘以B
    秋季学习总结
    题目1.A乘以B
    第一周作业
    C语言I博客作业02
    Silverlight中图像的变换(1)
    SQL SERVER 2005安装过程中COM+错误解决!
    c++ 对文件的操作
    JS标准DES加解密
  • 原文地址:https://www.cnblogs.com/wml3030/p/15243805.html
Copyright © 2020-2023  润新知