美文网首页
rsync同步工具

rsync同步工具

作者: 小王同学123321 | 来源:发表于2018-04-21 20:28 被阅读0次

    一、rsync的概述
    rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync”算法,可以将一个客户机和远程文件服务器之间的文件同步,也可以在本地系统中将数据从一个分区备份到另一个分区上。如果rsync在备份过程中出现了数据传输中断,恢复后可以继续传输不一致的部分。rsync可以执行完整备份或增量备份。它的主要特点有:
    1.可以镜像保存整个目录树和文件系统;
    2.可以很容易做到保持原来文件的权限、时间、软硬链接;无须特殊权限即可安装;
    3.可以增量同步数据,文件传输效率高,因而同步时间短;
    4.可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;
    5.支持匿名传输,以方便进行网站镜象等;
    6.加密传输数据,保证了数据的安全性;
    -v是“--verbose”,即详细模式输出; -z表示“--compress”,即传输时对数据进行压缩处理;
    -r表示“--recursive”,即对子目录以递归的模式处理;-t是“--time”,即保持文件时间信息;
    -o表示“owner”,用来保持文件属主信息;-p是“perms”,用来保持文件权限;
    -g是“group”,用来保持文件的属组信息;
    --progress用于显示数据镜像同步的过程;
    --delete选项指定以rsync服务器端为基础进行数据镜像同步,也就是要保持rsync服务器端目录与客户端目录的完全一致;
    --exclude选项用于排除不需要传输的文件类型;
    rsync的优点与不足
    与传统的cp、tar备份方式对比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如,定期地备份文件服务器数据到远端服务器,对本地磁盘定期进行数据镜像等。
    但是随着系统规模的不断扩大,rsync的缺点逐渐被暴露了出来。首先,rsync做数据同步时,需要扫描所有文件后进行对比,然后进行差量传输。如果文件很大,扫面文件是非常耗时的,而且发生变化的文件往往是很少一部分,因此rsync是非常低效的方式。其次,rsync不能实时监测、同步数据,虽然它可以通过Linux守护进程的方式触发同步,但是两次触发动作一定会有时间差,可能导致服务器端和客户端数据出现不一致
    在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。
    Rsync的命令格式可以为以下六种:
    对应于以上六种命令格式,rsync有六种不同的工作模式:
      1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup
      2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src
      3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data
      4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack
      5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www
      6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www
    从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:
    rsync -av /databack root@192.168.78.192::www
    列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:

    # rsync -auvz --progress --delete --bwlimit=1000 远程文件 本地文件 //限制为1000kBytes/s
    # rsync -auvz --progress --delete --bwlimit=2048 远程文件 本地文件 //限制为2M/s
    --------scp同步时的限流(-l参数)--------
    # scp -l 1024 file root@192.168.1.100  //限制为1M Bytes/s
    

    编译安装:

    cd /usr/local
    wget https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz
    tar -zxvf rsync-3.1.2.tar.gz
    cd rsync-3.1.2
    ./configure --prefix=/usr/local/rsync --disable-ipv6
    make
    make install
    
    ln -s /usr/local/rsync/bin/rsync /usr/local/bin/rsync
    vim /usr/local/rsync/rsyncd.conf
        pid file = /var/run/rsyncd.pid
        port = 873
        pid = root
        gid = root
        use chroot = no
        max connections = 200
        timeout 600
        lock file = /var/run/rsyncd.lock
        log file = /var/run/rsyncd.log
        secrets file = /usr/local/rsync/rsyncd.secrets
        motd file = /etc/rsyncd.motd
    
        [test]
        path = /test/
        ignore errors
        read only = true
        list = false
        hosts allow = *
        hosts deny = 0.0.0.0/32
        auth users root #该用户系统中存在且对后面指定的备份目录拥有权限
        comment = ocpyang test
    
    vi /usr/local/rsync/rsyncd.motd
    ++++++++++++++++++++++++++++++++++++
        Wlecome to ocpyang rsync services
    ++++++++++++++++++++++++++++++++++++
    
    vi /usr/local/rsync/rsyncd.secrets (--指定rsync访问的密码,密码不需要和系统账号密码相同)
        root:tiange1003
    ln -s /usr/local/rsync/rsyncd.conf /etc/rsyncd.conf
    ln -s /usr/local/rsync/rsyncd.motd /etc/rsyncd.motd
    ln -s /usr/local/rsync/rsyncd.secrets /etc/rsyncd.secrets
    chmod 600 /usr/local/rsync/rsyncd.secrets
    chown root:root /usr/local/rsync/rsyncd.secrets
    /usr/bin/rsync --daemon --config=/etc/rsyncd.conf (启动rsync)
     
    echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.d/rc.local
    cat /etc/rc.d/rc.local
    

    至此服务器的配置已经完成,可以在服务器端的的根目录下创建test目录,并且在目录里面创建1.sh文件
    客户端的配置,先编译安装好rsync

    vim /etc/rsyncd.secrets (在这个目录下将刚才在服务器端创建的密码填写到这个里面)
        tiange1003
    chmod 600 /etc/rsyncd.secrets
    rsync -vzrtopg --progress --delete root@192.168.40.129::test/2.sh /tmp/ (在客户端执行这个命令将服务器端/test目录下2.sh这个文件复制到客户端的/tmp目录下)
    rsync -vzrtopg --progress --delete root@192.168.40.129::test /ocpyang/ --password-file=/etc/rsyncd.pwd
    

    至此rsync服务器搭建成功,也验证成功
    下来新建同步脚本

    vim /rsync.sh
    #!/bin/bash
    rsync -vzrtopg --progress --delete root@192.168.40.129::test/2.sh /tmp/
    rsync -vzrtopg --progress --delete root@192.168.40.129::test /ocpyang/ --password-file=/etc/rsyncd.pwd
    

    自动同步(每隔五分钟同步一次)

    #crontab -e
    0,5 * * * * ./rsync.sh
    

    相关文章

      网友评论

          本文标题:rsync同步工具

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