• linux 下的 rsync 文件同步


    rsync是linux下的一款快速增量备份工具Remote Sync,是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。rsync是用 “rsync 算法”提供了客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好。
     
    一、获取rsync源码
    http://rsync.samba.org/download.html
    
    如:rsync-3.1.2.tar.gz
     
    二、安装rsync
    > tar -zxf rsync-3.1.2.tar.gz
    > cd rsync-3.1.2
    > ./configure --prefix=/data/rsync
    > make && make install
    
    三、rsync的配置
    rsync主要有三个配置文件:
    1、rsyncd.conf(主配置文件)
    3、rsyncd.secrets(密码文件)
    3、rsyncd.motd(rysnc服务器信息)
    
    分别创建如下文件
    > touch /etc/rsyncd.conf
    > touch /etc/rsyncd.secrets
    > chmod 600 /etc/rsyncd.secrets
    > touch /etc/rsyncd.motd
    
    修改上面创建的文件
    > vi /etc/rsyncd.conf
    
    #PID文件路径
    pid file = /data/rsync/rsyncd.pid
    #锁文件路径
    lock file = /data/rsync/rsyncd.lock
    #服务器日志文件路径
    log file = /data/rsync/log/rsyncd.log
    #端口
    port = 873
    #IP地址
    address = 192.168.1.10
    #运行RSYNC守护进程的用户
    uid = root
    #运行RSYNC守护进程的组
    gid = root
    #使用chroot
    use chroot = yes
    #最大连接数为5
    max connections = 5
    #motd文件路径
    motd file = /etc/rsyncd.motd
    
    #传输文件的日志
    transfer logging = yes
    #日志文件格式
    log format = %t %a %m %f %b
    #指定rsync发送日志消息给syslog时的消息级别。
    syslog facility = local3
    timeout = 300
    
    #模块是定义服务器哪个目录要被同步
    #每个模块都要以[name]形式定义
    [backup]
    #镜像目录,不可缺少
    path = /data/backup
    #允许列文件
    list=yes
    #可以忽略一些无关的IO错误
    ignore errors
    #认证的用户
    auth users = test
    #密码文件路径
    secrets file = /etc/rsyncd.secrets
    #注释
    comment = backup data
    #排除/data/backup下的指定文件
    exclude = test1/ test2/
    #允许主机
    hosts allow = 192.168.1.10 127.0.0.1
    #禁止主机
    hosts deny = *
    
    (*如果自定义了日志文件路径,请手动创建log目录,并给予必要的权限)
     
    修改配置密码文件
    > vi /etc/rsyncd.secrets
    
    格式为: 用户名:密码
    test:123456
    
    (*出于安全考虑,我们把rsyncd.secrets权限设为600,注意这里的用户名和密码并不一定是系统的用户和密码,为了安全可以自已设置)
     
    修改服务器欢迎信息
    > vi /etc/rsyncd.motd
    
    ++++++++++++++++++++++++++++++++++
    welcome to use the rsync services!
    ++++++++++++++++++++++++++++++++++
    
    四、rsync基本操作
    启动rsync服务
    (1)以--daemon方式启动服务
    > /data/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf
    
    (2)通过xinetd的方式
    查看rsync服务是否启动
    > ps -ef|grep rsync
    > netstat -anlp|grep 873
    
    (*如果没有正常启动,请查看日志文件)
    bind() failed: Cannot assign requested address (address-family 2)
    2016/04/15 13:37:21 [14946] unable to bind any inbound sockets on port 873
    2016/04/15 13:37:21 [14946] rsync error: error in socket IO (code 10) at socket.c(555) [Receiver=3.1.2]
    
    如果出现如上信息,则需要把rsyncd.conf中的address改为127.0.0.1。
     
    五、客户端配置与文件同步
    客户端rsync的配置与服务器端基本相同,这里就不过多描述了。
    > yum -y install rsync
    
    我这里就只在本机演示了
    > /data/rsync/bin/rsync -avzP test@127.0.0.1::backup /data/backup2
    
    上述命令的意思是用test用户登陆到127.0.0.1的rsync服务器上,把backup数据同步到本地的/data/backup2目录下。
    -a 参数,相当于-rlptgoD;
    -r 是递归;
    -l 是链接文件,意思是拷贝链接文件;
    -p 表示保持文件原有权限;
    -t 保持文件原有时间;
    -g 保持文件原有用户组;
    -o 保持文件原有属主;
    -D 相当于块设备文件;
    -z 传输时压缩;
    -P 传输进度;
    -v 传输时的进度等信息,和-P有点关系;
    
    --progress 是指显示出详细的进度情况
    --delete 是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
    --password-file=/password/path/file 来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
    
    > /data/rsync/bin/rsync -avzP --delete test@127.0.0.1::backup /data/backup2
    > /data/rsync/bin/rsync -avzP --password-file=/data/rsync.pwd test@127.0.0.1::backup /data/backup2
    
    /data/rsync.pwd用来存储客户端用test用户登陆服务器时需要的密码
    > echo "123456" > /data/rsync.pwd
    > chmod 600 /data/rsync.pwd
    
    六、客户端自动与服务器进行文件同步
    通过创建定时任务来完成同步
    > crontab -e
    
    * * * * * /data/rsync/bin/rsync -avzP --delete --password-file=/data/rsync.pwd test@127.0.0.1::backup /data/backup2
    
    表示每分钟执行一次命令
    > killall crond
    > /usr/sbin/crond
    
    杀死crond进程,再重新启动
     
    我们通过在/data/backup下创建新的文件,看看是否会同步到backup2目录下。
    > cd /data/backup/
    > echo "test..." > test.txt
    > cd /data/backup2/
    > ls
    
    等待了一分钟后,文件成功同步了。
  • 相关阅读:
    从头认识java-14.2 进一步了解数组
    移植MonkeyRunner的图片对照和获取子图功能的实现-UiAutomator/Robotium篇
    JVM —— 移除永久代
    三层架构与四大天王之——查
    unity3D中使用Socket进行数据通信(一)
    npm使用指南
    java命令模式
    共享内存通讯编程
    jade 入门
    MongoDB数据库进阶 --- 增删查改...
  • 原文地址:https://www.cnblogs.com/jkko123/p/6294577.html
Copyright © 2020-2023  润新知