rsync入门

转载 2015年11月19日 17:27:48

rsync是Linux/unix下一个用于远程文件(目录)同步的一个精巧的小工具程序,有很多文章讨论了其功能和实现原理,本文主要就不赘述了。

主要介绍下实践时使用的一些方法和细枝末节留作工作笔记以便日后参考。

大部分的Linux发布包中基本都默认包含了rsync这个小工具,这里就不介绍其安装了。

使用场景

用rsync同步程序部署包到单个或多个测试机上。

模式

rsync支持6种工作模式,总体划分为pull和push两种。具体参看官方文档 rsync man page,本文的场景适合于push模式。

过程

下面以 rsync daemon方式的push模式做说明,其命令模式如下

 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

 本地机作为client端,远程服务器作为server端,文件从本地push到远程服务器指定目录下。首先需在远程服务器用daemon模式启动rsync,启动前需对rsync的配置文件进行配置。

配置文件默认为 /etc/rsyncd.conf,若之前没有使用过,/etc目录下默认没有该文件,需新建该文件,如下所示:

配置文件是由一个或多个模块结构组成。一个模块定义以方括弧中的模块名开始,直到下一个模块定义开始或者文件结束,模块中包含格式为name = value的参数定义

[plain] view plaincopy
  1. # 全局参数定义  
  2. uid = root  
  3. gid = root  
  4. use chroot = no  
  5. max connections = 1              #指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。  
  6. pid file = /tmp/rsyncd.pid   
  7. lock file = /tmp/rsyncd.lock  
  8. log file = /tmp/rsyncd.log  
  9. # tmp 模块  
  10. [tmp]  
  11. path = /tmp/rsync  
  12. read only =  no                  #不能只读,因为要向服务器传输文件,必须可写  
  13. list = yes  
  14. hosts allow = 192.168.1.5        #只允许这个ip访问  
  15. hosts deny = 0.0.0.0/32  
  16. auth users = root                #授权用户  
  17. secrets file = /etc/rsyncd.pas   #授权密码  格式:root:123456  可如此生成该文件:echo "root:123456" > /etc/rsyncd.pas; chmod 600 /etc/rsyncd.pas(只有所有者可以读写)  
  18. # vdisk 模块  
  19. [vdisk]  
  20. path = /backup/vdisk  
  21. read only =  no  
  22. list = yes  
  23. hosts allow = 192.168.1.5  
  24. hosts deny = 0.0.0.0/32  
  25. auth users = root  
  26. secrets file = /etc/rsyncd.pas  


配置完成后,按如下命令启动rsync daemon服务

[plain] view plaincopy
  1. rsync --daemon 或 rsync --daemon --config=/etc/rsyncd.conf  

若要停止服务,执行如下命令

[plain] view plaincopy
  1. cat /tmp/rsyncd.pid | xargs kill -9 && rm -rf /tmp/rsyncd.pid  

完成了服务端配置,并启动服务后在client端执行如下命令进行文件同步:

[plain] view plaincopy
  1. rsync -varz --delete --exclude ".*" --progress --password-file=/etc/rsyncd.pas /tmp root@192.168.1.5::tmp  

以上命令是将本地/tmp目录同步到远程服务器的tmp模块指定的目录,也就是服务端配置文件中path的位置,如上path = /tmp/rsync

具体参数选项参考man page,这里需要提一点的是client端的密码文件只需要密码,不需要用户名否则会报如下错误:

[plain] view plaincopy
  1. @ERROR: auth failed on module testlink    
  2. rsync error: error starting client-server protocol (code 5) at main.c(1527) [receiver=3.0.6]    

生成客户端密码文件可用如下脚本命令

[plain] view plaincopy
  1. echo "123456" > /etc/rsyncd.pas; chmod 600 /etc/rsyncd.pas  

rsync入门

rsync是Linux/unix下一个用于远程文件(目录)同步的一个精巧的小工具程序,有很多文章讨论了其功能和实现原理,本文主要就不赘述了。 主要介绍下实践时使用的一些方法和细枝末节留作工作笔记以便...

rsync常见错误及解决方法

  • 2017年11月22日 20:03
  • 15KB
  • 下载

基于git+rsync的代码--备份/上线/回滚--脚本一例

简单分享下我们之前的采用的基于git的开发上线流程,以及所采用的的上线脚本。流程是个大问题,这里只简单说下只能希望是抛砖引玉了;上线脚本是本文“重点”。之所以想分享这套脚本,因为个人感觉这套脚本提供了...
  • kai404
  • kai404
  • 2016年10月18日 23:27
  • 1984

Rsync详解及liunx和windows下的配置

  • 2015年03月04日 20:46
  • 81KB
  • 下载

rsync+inotify实现数据的实时同步更新

rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样...

rsync命令详细解答

  • 2012年03月16日 17:56
  • 3KB
  • 下载

rsync 自动备份

  • 2013年01月08日 22:36
  • 37KB
  • 下载

Dropbox差异同步算法rsync及其改进算法原理

之前用过rsync很多次,只知道可以做差异同步也没研究过原理。所谓差异同步是指只通过传输两文件的差异部分将两文件同步到一致,自己取的称谓,不知道学术术语是什么。差异同步算法中最有名的就是rsync系列...
  • sbvfhp
  • sbvfhp
  • 2013年04月10日 16:24
  • 1647
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:rsync入门
举报原因:
原因补充:

(最多只允许输入30个字)