rysnc知识梳理
rsync语法:
Local: rsync [OPTION...] SRC... [DEST] #<===本地传输数据 Access via remote shell: #<===借助通道传输数据,本地-远程主机;远程主机-本地
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] #<===从远程主机拉取数据到本地
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST #<===从本地推数据到远程主机 Access via rsync daemon: #<===通过守护进程(socket网络套接字)传输数据---重点
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] #<===注意daemon模式下传输数据,使用的是自定义的模块的名称
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
本地传输模式和借助通道传输模式使用实例
[root@meinv01 ~]# rsync /etc/hosts /tmp/ #<==本地到本地
[root@meinv01 ~]# ls /tmp/
hosts
ssh-NFCFOdb882
[root@meinv01 ~]# rsync -avz /etc/hosts -e 'ssh -p 22' root@192.168.81.169:~ #<==借助ssh通道,拷贝本地文件到远程主机,如果是远程拉取数据到本地,调换一下位置即可
root@192.168.81.169's password:
sending incremental file list
sent 30 bytes received 12 bytes 12.00 bytes/sec
total size is 158 speedup is 3.76
[root@meinv02 ~]# ll
total 44
-rw-------. 1 root root 1116 Aug 1 12:58 anaconda-ks.cfg
-rw-r--r-- 1 root root 158 Aug 1 12:35 hosts
注意点:源路径如果是一个目录的话,带上尾随斜线和不带尾随斜线是不一样的,不带尾随斜线表示的是整个目录包括目录本身,带上尾随斜线表示的是目录中的文件,不包括目录本身
如:
[root@xuexi ~]# rsync -a /etc /tmp #<==表示把etc这个目录及其目录下的文件和目录拷贝到tmp下
[root@xuexi ~]# rsync -a /etc/ /tmp #<==只把etc下的文件及目录拷贝到tmp
rsync的常用参数说明:(-avzP相当于-vzrtopgDlP,脚本内用az即可)
-v --verbose 输出传输时的进度信息
-z --compress 传输时进行压缩传输以提高效率 --compress-level=NUM可按级别压缩
-a --archive 归档模式,递归方式传输并保持所有文件属性,等价于--rtopgDl
-r --recursive 对子目录以递归模式传输,小写r参数
-t --times 保持文件时间信息
-o --owner 保持文件属主信息
-p --perms 保持文件权限信息
-g --group 保持文件属组信息
-P --progress 显示同步的过程及传输的进度等信息
-D --devices 保持文件设备信息
-l --links 保持软链接信息
-e --rsh=command 指定使用的信道协议,指定替换的rsh的shell程序,如ssh
--exclude=pattern 指定排除不需要的传输的文件模式
--exclude-from=file 排除指定文件内容中的文件
--bwlimit=RATE 传输时进行限速(整数)
--delete 同步参数(慎用
rsync通过守护进程socket传输数据图解:
rsync服务端配置:
[root@C-linux ~]# uname -r #<==查看版本号
2.6.32-431.el6.x86_64
[root@C-linux ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
[root@C-linux ~]# /etc/init.d/iptables status #<==停止防火墙
iptables: Firewall is not running.
[root@C-linux ~]# getenforce #<==关闭selinux
Disabled
[root@C-linux ~]# rpm -qa|grep rsync #<==服务端和客户端和要保证rsync软件包已安装
rsync-3.0.6-9.el6_4.1.x86_64
[root@C-linux ~]# rsync --version #<==查看rsync版本号
rsync version 3.0.6 protocol version 30
[root@C-linux ~]# rz -y
rz waiting to receive.
???a? zmodem ′???£ °′ Ctrl+C ???£
??′?? rsyncd.conf...
100% 562 bytes 562 bytes/s 00:00:01 0 ′?
?[root@C-linux ~]# ls
rsyncd.conf
[root@C-linux ~]# cp rsyncd.conf /etc/
[root@C-linux ~]# useradd -M -s /sbin/nologin rsync #<==添加指定用户作为传输时使用的用户
[root@C-linux ~]# id rsync
uid=502(rsync) gid=502(rsync) 组=502(rsync)
[root@C-linux ~]# vi /etc/rsyncd.conf
[root@C-linux ~]# cat /etc/rsyncd.conf #<==rsync服务端配置文件具体配置
#rsync_configuration
#port=873 # 指定rsync端口。默认873(没有特殊需求,使用默认端口即可)
uid = rsync # rsync服务的运行用户,默认是nobody,文件传输成功后属主将是这个uid
gid = rsync # rsync服务的运行组,默认是nobody,文件传输成功后属组将是这个gid
use chroot = no # rsync daemon在传输前是否切换到指定的path目录下,并将其监禁在内
max connections = 200 # 指定最大连接数量,0表示没有限制
timeout = 300 # 链接超时时间,确保rsync服务器不会永远等待一个崩溃的客户端,0表示永远等待
pid file = /var/run/rsyncd.pid # 指定rsync daemon的pid文件
lock file = /var/run/rsync.lock # 指定锁文件
log file = /var/log/rsyncd.log # 指定rsync的日志文件存放,而不把日志发送给syslog
[data] # 模块ID ,传输数据时指定模块ID,就会将数据传输到模块指定对应的目录下
path = /data/ # 指定该模块的路径,该参数必须指定。启动rsync服务前该目录必须存在。rsync请求访问模块本质就是访问该路径
ignore errors # 忽略某些IO错误信息
read only = false # 指定该模块是否可读写,即能否上传文件,false表示可读写,true表示可读不可写。所有模块默认不可上传
#write only = false # 指定该模式是否支持下载,设置为true表示客户端不能下载。所有模块默认可下载
list = false # 客户端请求显示模块列表时,该模块是否显示出来,设置为false则该模块为隐藏模块。默认true
hosts allow = 10.0.0.0/24 # 指定允许连接到该模块的机器,多个ip用空格隔开或者设置区间
hosts deny = 0.0.0.0/32 # 指定不允许连接到该模块的机器
auth users = rsync_backup # 指定连接到该模块的用户列表,只有列表里的用户才能连接到模块,用户名和对应密码保存在secrts file中,
# 这里使用的不是系统用户,而是虚拟用户。不设置时,默认所有用户都能连接,但使用的是匿名连接
secrets file = /etc/rsync.password # 保存auth users用户列表的用户名和密码,每行包含一个username:passwd。由于"strict modes",
# 默认为true,所以此文件要求非rsync daemon用户不可读写。只有启用了auth users该选项才有效
#rsync_config_______________end #[test] # 以下定义的是第二个模块(根据情况加载即可)
:wq #<==保存退出
[root@C-linux ~]# mkdir /data #<==创建rsync模块所存放的目录
[root@C-linux ~]# chown -R rsync.rsync /data #<==授权
[root@C-linux ~]# echo 'rsync_backup:123456' >/etc/rsync.password #<==指定密码文件
[root@C-linux ~]# cat /etc/rsync.password
rsync_backup:123456
[root@C-linux ~]# chmod 600 /etc/rsync.password #<==此文件权限需为600,否则出错
[root@C-linux ~]# ll /etc/rsync.password
-rw------- 1 root root 20 1月 31 13:16 /etc/rsync.password
[root@C-linux ~]# rsync --daemon #<==启动rsync服务
[root@C-linux ~]# netstat -lntup|grep rsync #查看服务是否起来
[root@C-linux ~]# echo 'rsync --daemon' >>/etc/rc.local
以上是服务端(rsync --damon)的配置,下面
配置客户端
[root@A-linux ~]# /etc/init.d/iptables stop
[root@A-linux ~]# getenforce
Disabled
[root@A-linux ~]# rpm -qa|grep rsync
[root@A-linux ~]# echo '123456' >/etc/rsync.password
[root@A-linux ~]# cat /etc/rsync.password #<===客户端密码文件只需要保留密码即可,无需将用户一起保留
123456
[root@A-linux ~]# chmod 600 /etc/rsync.password
[root@A-linux ~]# ll /etc/rsync.password
-rw------- 1 root root 7 1月 31 13:28 /etc/rsync.password
配置完成后,需要注意2个地方:
1. 数据的流向是从客户端到服务端,在客户端进行拉/推操作数据流向
2. 所有操作(备份)都是在客户端,服务端只是守护进程
3. 配置好rsync --daemon服务端后,在客户端推拉数据的时候,就不用借用通道了,直接是使用服务端侦听的端口传输数据
测试验证:
客户端推数据到服务端
[root@A-linux ~]# rsync -avz /tmp/ rsync_backup@10.0.0.4::data --password-file=/etc/rsync.password
sending incremental file list
./
hosts
.ICE-unix/
ssh-hBbdsD1500/
ssh-hBbdsD1500/agent.1500 sent 253 bytes received 41 bytes 588.00 bytes/sec
total size is 166 speedup is 0.56
服务端查看数据
[root@C-linux ~]# ll /data/
总用量 8
-rw-r--r-- 1 rsync rsync 166 1月 31 10:36 hosts
drwx------ 2 rsync rsync 4096 1月 31 13:27 ssh-hBbdsD1500
如果出现报错信息,查看日志排错即可! 更多rsync知识及原理深入了解,请查看好友博客
http://www.cnblogs.com/f-ck-need-u/p/7220009.html
rysnc知识梳理的更多相关文章
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- solr DIH 知识梳理
solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...
- Anliven - 基础知识梳理汇总 - 软件测试
基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...
- [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型
引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...
- java基础知识梳理
java基础知识梳理 1 基本数据类型
随机推荐
- flask部署深度学习模型
flask部署深度学习模型 作为著名Python web框架之一的Flask,具有简单轻量.灵活.扩展丰富且上手难度低的特点,因此成为了机器学习和深度学习模型上线跑定时任务,提供API的首选框架. 众 ...
- mysql时间类型和格式转换
内容目录 简介mysql时间类型DATE_FORMAT()函数 简介 今天开发中,做一个功能需要对历史数据进行补充,相信大家也遇到过这样的情况,这个历史数据需要按月份和人的id进行区分,于是想到了my ...
- 【C_Language】---最全面的C指针总结,初级程序员必备
好久没写博客了,重新学习C语言了的基础课程,发现很多东西都忘记的差不多了,闲来无事,总结一下关于指针的知识,希望能帮到像我一样的菜鸟们: 指针,众所周知是C语言的精华所在,不懂指针的话,你就不要说你学 ...
- Activiti工作流引擎开发系列
Activiti工作流引擎开发系列-01 作者:Jesai 没有伞的孩子,只能光脚奔跑! 前言: 初次接触工作流这个概念是自从2014年11月份开始,当时是由于我的毕业设计需要,还记得当时我毕业设计的 ...
- Jenkins自动执行python脚本输出测试报告
前言 在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作. 借助Jenkins,我们可以结合 Git/SVN 自动拉取 ...
- 遗传编程GP-地图路径寻路
本文介绍的是基于GP,并非A*算法,算是另类实现吧. 先看看地图定义,在文本文件中定义如下字符串,代表30列11行大小的地图 初始位置在左上角(0,0) ,值为1的是允许走的通的路,目标位置为右下角( ...
- SSM框架整合中,不报错,数据库只能存ID进去问题解决
嗯,这个错误其实不能算错误,是粗心造成的,在配置文件中对于传递的参数没有写#字符,直接写的的属性名.居然错了两次,哎!!! 嗯,还有一个问题,在动态SQL中,if标签中test属性中判断时,不能用大写 ...
- HTML5 App商业开发实战教程 基于WeX5可视化开发平台
- Dynamics CRM Package Deployer 部署工具
CRM 部署工具非常有用 我们可以用部署工具来做迁移,部署 等等. Package Deployer可以同时部署多个solutions. 并且也可以勾选solution的plugin也同时部署. 三 ...
- jemeter察看结果树中文乱码解决办法
在使用jemeter进行接口测试时,在察看结果树查看接口返回结果时,中文全部显示乱码,这个问题的解决方式如下: 在jemeter的安装路径下面,找到bin目录下, 在bin目录下面找到这个文件:jme ...