博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rsync入门
阅读量:5275 次
发布时间:2019-06-14

本文共 1988 字,大约阅读时间需要 6 分钟。

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

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

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

使用场景

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

模式

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

过程

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

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

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

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

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

# 全局参数定义uid = rootgid = rootuse chroot = nomax connections = 1              #指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。pid file = /tmp/rsyncd.pid lock file = /tmp/rsyncd.locklog file = /tmp/rsyncd.log# tmp 模块[tmp]path = /tmp/rsyncread only =  no                  #不能只读,因为要向服务器传输文件,必须可写list = yeshosts allow = 192.168.1.5        #只允许这个ip访问hosts deny = 0.0.0.0/32auth users = root                #授权用户secrets file = /etc/rsyncd.pas   #授权密码  格式:root:123456  可如此生成该文件:echo "root:123456" > /etc/rsyncd.pas; chmod 600 /etc/rsyncd.pas(只有所有者可以读写)# vdisk 模块[vdisk]path = /backup/vdiskread only =  nolist = yeshosts allow = 192.168.1.5hosts deny = 0.0.0.0/32auth users = rootsecrets file = /etc/rsyncd.pas

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

rsync --daemon 或 rsync --daemon --config=/etc/rsyncd.conf

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

cat /tmp/rsyncd.pid | xargs kill -9 && rm -rf /tmp/rsyncd.pid

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

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端的密码文件只需要密码,不需要用户名否则会报如下错误:

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

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

echo "123456" > /etc/rsyncd.pas; chmod 600 /etc/rsyncd.pas

转载于:https://www.cnblogs.com/hehe520/archive/2012/05/29/6147651.html

你可能感兴趣的文章
一个App项目设计开发完整流程
查看>>
如何使用iClap创建普通批注
查看>>
用Java编写自己的机器人,为你承担苦力
查看>>
第四章App4_3,懂得了抛出异常 throws Exception,read为读取键盘输入数,学会了switch循环...
查看>>
从零开始——MySql01
查看>>
基于线程池的线程管理(BlockingQueue生产者消费者方式)实例
查看>>
sqlmap
查看>>
给出随机存储器(RAM)和只读存储器(ROM)的差别
查看>>
CSS3 3D Transform
查看>>
js深拷贝
查看>>
http和socket之长连接和短连接区别(转)
查看>>
【HTML】网页中如何让DIV在网页滚动到特定位置时出现
查看>>
文件序列化
查看>>
C++11 中的线程、锁和条件变量
查看>>
HDU 2485 Destroying the bus stations(!最大流∩!费用流∩搜索)
查看>>
Oracle关于用户信息的一些SQL语句
查看>>
2019-02-28处理公司同事无法上网事件记录
查看>>
HTCVive使用
查看>>
Javascript 浏览器检测
查看>>
Java程序员常用工具类库
查看>>