• 使用Rsync进行文件的同步与备份


    Rsync是Linux下非常不错的文件同步备份工具,安全性高、备份迅速、支持增量备,功能强大且高效。

    服务端配置

    Rsync服务的配置文件/etc/rsyncd.conf,示例配置(带用户名密码配置):

    pid file = /var/log/rsyncd.pid
    lock file = /var/log/rsyncd.lock
    log file = /var/log/rsyncd.log
    port = 873
    #address = 10.0.xx.xx
    uid = root
    gid = root
    use chroot = no
    read only = no
    # test是模块名,多个模块只需要参考test依次添加即可
    [test]
    path= /root/data/
    # 认证的用户名,这里用的rsync,在下面的密码文件中有定义
    auth users = rsync
    # 密码文件(下面定义) 
    secrets file = /etc/rsyncd.secrets
    hosts allow= *
    

    密码文件(/etc/rsyncd.secrets)格式:

    rsync:rsync_pass
    

    以上用户名密码之间使用冒号分隔。

    注意:密码文件必须要设置权限为600,使用chmod 600 /etc/rsyncd.secrets设置即可,不然同步时会提示:

    @ERROR: auth failed on module XXX
    

    以上配置OK后,使用rsync --daemon启动服务即可,如果配置需要调整,直接修改对应的配置文件即可,修改完立马生效,无需重启rsync服务。

    客户端配置

    上述服务端配置中test模块设置了使用用户名密码的方式访问,因此在客户端使用rsync同步时需要添加用户名密码相关的参数。

    一个同步示例:

    # /etc/rsync.pas文件需要手动创建哦
    rsync -avz --password-file=/etc/rsync.pas rsync@10.1.xx.xxx::test/ /home/test/
    

    -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性

    -v,详细显示同步信息

    -z,传输过程中加密

    --password-file表示保存密码的文件,rsync同步时从此文件中获取密码信息,此文件同样需要设置访问权限为600。

    注意:--password-file文件中的内容只保存密码即可,不需要保存用户名,否则会出现认证失败的错误,示例:

    rsync_pass
    

    远程目录的表示方式为:用户@Rsync服务器的IP::模块名/路径

    最后一个参数是同步到的本地路径。

    其他的参数,直接执行rsync就可以看到说明,这里不再一一说明。

    其他

    如果只要查看rsync服务器上的文件,可以使用以下命令(前提是所查看的模块在服务端配置了允许参看才可以):

    rsync --list-only --password-file=/etc/rsync.pas rsync@10.1.xx.xxx::test/
    

    如果需要定时同步日志,只需要把上述同步的命令,添加到shell脚本中,通过配置crontab定期执行脚本就可以了。

    对于大量文件的实时备份,可以考虑Rsync+inotify的机制,这里就不做介绍了,可以移步到这里

    Windows下的Rsync

    Windows下需要安装cwRsync(客户端,请自行下载,服务端是cwRsyncServer),cwRsync其实是采用cygwin移植的Linux下的rsync命令,因此在同步某个盘符的时候需要注意路径的写法,下面是一个示例:

    如果需要处理C:WORK*下的文件,那么需要写成/cygdrive/c/work/*

    rsync -r /cygdrive/c/work/ remotehost:/home/user/work/
    

    注意

    安装完Rsync后,将安装目录下的bin目录添加到PATH环境变量中,就可以使用rsync命令了。安装Rsync是不需要单独安装cygwin的,当然,如果打算通过脚本来同步,安装一下cygwin还是有必要的,毕竟linux下的shell脚本比windows下的批处理要强大的多。

  • 相关阅读:
    mysql 存储过程实例
    国际会议查询方式和相关会议
    用 WEKA 进行数据挖掘,第 1 部分: 简介和回归(转)
    java实现甘特图的2种方法:SwiftGantt和Jfree (转)
    通过jxl 读取excel 文件中的日期,并计算时间间隔
    R 操作矩阵和计算SVD的基本操作记录
    SVD java 算法实现
    聚类方法简介
    Kolmogorov-Smirnov检验
    Java Thread 多线程 介绍
  • 原文地址:https://www.cnblogs.com/jasondan/p/4040912.html
Copyright © 2020-2023  润新知