Rsync全称是remote synchronize,也就是远程同步工具。官网介绍,“rsync is an open source utility that provides fast incremental file transfer. (rsync是一款提供快速增量文件传输的开源工具)”。主要用来解决服务器间文件拷贝或目录同步的问题。最常见的应用场景就是服务器热备份。目前最新版本3.1.2在2015年12月发布,但是阿里云服务器yum源还是3.0.9。
一、rsync应用基础
常用场景:
1,本地磁盘镜像;
2,远程服务器增量备份;
3,资源站匿名镜像;
搭配软件:
cron(定时任务)
lsyncd(实时同步工具)
类似功能软件:
lsyncd,scp,sftp,rcp等
Rsync几种用法
1,本地同步:
rsync –vr --delete /from_disk1/ /to_disk2/
-v 表示显示详细同步信息
-r 表示递归到子目录
--delete 表示删除文件操作也会被同步
2,远程同步通过ssh协议
本地文件同步到远程服务器
rsync –r –-delete /data/from/ root@192.168.1.23:/data/to/
远程服务器文件目录同步到本地
rsync –r –delete root@192.168.1.23:/data/to/ /data/from
执行过程中需要输入密码,和ssh登录一样
3,远程同步通过socket协议,也就是 rsync -–daemon,该用法最常用,需要配置服务端,客户端通过rsync命令进行同步,下面通过一个实际应用场景来详细讲解,然后再介绍一下详细配置。
二、应用场景
我们就来说说最简单的主服务器热备份实现方案吧
有两个服务器,
Main Server是主服务器,正常状况下对外提供服务,新功能直接上线到该服务器
HotBackUp Server 是热备份服务器,当主服务器出现异常时,所有访问立马切换到该服务器,代码和资源需要和主服务器保持一致
那么就存在这么几个问题(这里假设只考虑代码和静态资源文件,数据库是独立的):
1, 当主服务器新上线代码是,热备服务器如何保持一致
2, 用户将图片上传到主服务器,热备服务器如何保持一致
这个时候rsync就可以排上用场了:
解决方案一:
1,热备服务器上配置 rsync server服务
2,主服务器通过cron设置定时任务,每分钟执行rsync命令,将服务目录同步到热备服务器
解决方案二:
1,主服务器上配置rsync server 服务
2,热备服务器通过cron设置定时任务,每分钟执行rsync命令,将主服务器目录同步到本地
解决方案三:
1,热备服务器上配置rsync server服务
2,主服务器启动lrsync服务,实时监听目录变动,将变动文件同步到热备服务器
具体方案的选择,就需要根据网站自身业务来选定了,有了方案,我们接下来聊聊具体如何配置吧
三、配置和应用
1, Rsync Server端配置,ip为192.168.2.33,在/etc/ 目录下新建一个rsyncd.conf,内容如下
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secret file = /var/run/rsync.pass
[wwwroot]
path = /www/html
hosts allow = 192.169.2.171
uid = root
gid = root
port=874
auth users = test_sync
read only = no
在/var/run/ 目录下新建一个rsync.pass文件,写入用户名和密码’test_rsync:12345678’,并且修改权限为600
服务端启动方式:rsync –daemon (默认配置文件是/etc/rsyncd.conf)
也可指定配置文件启动:/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
2, rsync客户端同步
创建一个密码文件/etc/rsync.pass,写入密码’12345678’,并修改权限为600
执行同步命令:
rsync -avH --delete --progress /data/shiwei/platforms/ test_rsync@192.168.2.33::wwwroot --password-file=/etc/rsync.pass
如果需要定时同步,这里可以通过定时任务工具cron来设置定时执行
新建一个执行该命令的shell文件,/root/rsync.sh,修改为可执行权限”chmod +x /root/rsync.sh”,编辑内容如下:
#! /bin/bash
rsync -avH --delete --progress /data/shiwei/platforms/ test_rsync@192.168.2.33::wwwroot --password-file=/etc/rsync.pass
vi打开/etc/crontab,加入如下一行,就可以
*/1 * * * * root /root/rsync.sh
这样每分钟开始时,就会执行自动同步了
参考:
官网:https://rsync.samba.org/
Rsync配置项说明(全英文哦):https://download.samba.org/pub/rsync/rsyncd.conf.html
Lsyncd+sync实现实时同步:http://www.oschina.net/question/54100_137632
linux下远程传输文件的方式sftp.scp,rsync,rcp http://www.2cto.com/os/201109/104734.html
来源:oschina
链接:https://my.oschina.net/u/146046/blog/679370