关闭

rsync入门

208人阅读 评论(0) 收藏 举报
分类:

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  
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:159323次
    • 积分:2117
    • 等级:
    • 排名:第17941名
    • 原创:12篇
    • 转载:235篇
    • 译文:2篇
    • 评论:14条
    文章分类
    最新评论