rsync一:工作模式及语法
本文内容翻译自rsync的官方文档:http://rsync.samba.org/ftp/rsync/rsync.html,以及http://rsync.samba.org/ftp/rsync/rsyncd.conf.html,非完整的全文翻译,并且按照我的需要,对原文的相关章节或条目进行了适当的重新编排。官方文档发布日期:26 Mar 2011。
rsync是Unix/Linux系统中一款优秀高效的镜像同步和远程数据备份工具,它可以把本地文件拷贝到远程主机,或从远程主机拷贝文件到本地,也可以在本地的两个目录之间进行拷贝,但不支持两个远程主机之间的互相拷贝。
关于rsync的工作方式:
rsync连接远程主机进行同步或备份时有两种途径:使用远程shell程序(如ssh或rsh)进行连接,或使用TCP直接连接rsync daemon。
当源路径或目的路径的主机名后面包含一个冒号分隔符时,rsync使用远程shell传输;当源路径或目的路径的主机名后面包含两个冒号,或使用rsync://URL时,rsync使用TCP直接连接rsync daemon。
特别的,如果只指定了源路径,而没有指定目的路径,rsync将会显示源路径中的文件列表,类似于使用命令ls -l。
至于什么是daemon,以及远程shell衍生daemon,下文会有说明。
关于rsync的安装:
rsync安装方式是最常规的./configure && make && make install,只是要注意:源机器和目标机器都要安装。
关于rsync的启动:
前面说过rsync在进行同步或备份时,有两种途经连接远程主机:使用远程shell,或使用TCP连接远程daemon,可以把它们分别称之为shell模式和daemon模式。只有daemon模式才有启动rsync一说。
如果使用shell模式,rsync安装完成后就可以直接使用了,无所谓启动,也不需要任何配置文件。远程传输时一般使用ssh作为传输工具,当然,也可以使用参数-e来指定一个远程shell。
如果使用daemon模式,就无需远程shell了,但必须在一台机器上启动rsync daemon,默认端口873.
你可以经由inetd启动daemon,或者作为一个独立进程启动daemon,或者由rsync client通过远程shell启动daemon。
1)如果把它作为一个独立进程来启动,只需要运行命令:rsync --daemon即可;
2)如果通过inetd来运行,要修改两个文件:/etc/services和/etc/inetd.conf:
在/etc/services文件中添加如下行:rsync 873/tcp
在/etc/inetd.conf中添加:rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
注意把/usr/bin/rsync换成你的rsync安装目录!然后重启inetd服务,使配置文件生效。
关于由client通过远程shell启动daemon,官方文档中有一个条目:USING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION。
条目中说,rsync支持这种用法:使用远程shell连接host,然后衍生出一个single-use “daemon”服务器,来读取远程用户家目录下的配置文件。从用户的角度看,通过远程shell连接而启用的daemon传输,它的命令行语法跟正常的rsync daemon传输是一样的,唯一不同的是,你必须在命令中使用--rsh=COMMAND来明确远程shell程序。如下例:
rsync -av --rsh=ssh host::module /dest
译者注:虽然官方文档中说这种用法在某些情况下很有用,但我觉得很别扭。
当rsync作为daemon运行时,它需要一个用户身份。如果你希望启用chroot,则必须以root的身份来运行daemon,监听端口(1024以下,默认873),或设定文件属主;如果不启用chroot,也可以不使用root用户来运行daemon,但该用户必须对相应的模块拥有读写数据、日志和lock file的权限。
当rsync以daemon模式运行时,它还需要一个配置文件:rsyncd.conf。修改这个配置后不必重启rsync daemon,因为每一次的client连接都会去重新读取该文件。
译者注:关于配置文件rsyncd.conf的设定,后面会有详细的参数解释。
关于rsync的两种模式:
该部分额外的内容来自IBM官方网站上的一篇文章。该文章把rsync的运行模式扩展成了四种,但我认为rsync官方文档的两种模式的划分更加合理一些。
所谓rsync daemon,就是在一台机器上永久运行的rsync进程。在任何一台安装rsync的机器上运行rsync --daemon,则这台机器上运行的rsync就是rsync daemon。我们可以把文件发送给daemon,也可以向daemon请求文件。
daemon模式非常适合创建中心备份服务器,或项目存储库。
两种模式的区别前面已经说过,shell模式在源路径和目的路径中使用一个冒号,而daemon模式使用两个冒号。
关于rsync命令的语法:
- 本地拷贝:
- rsync [选项] SRC… DEST,在本地进行复制操作
- shell模式:
- rsync [选项] [user@]Host:SRC… [DEST],拉动作,从远程主机拉文件到本地
- rsync [选项] SRC… [user@]Host:DEST,推动作,把本地文件推送到远程主机
- daemon模式:
- rsync [选项] [user@]Host::SRC… [DEST],拉动作
- rsync [选项] rsync://[user@]Host [:port]/SRC… [DEST],仍然是拉动作
- rsync [选项] SRC... [user@]Host::DEST,推动作
- rsync [选项] SRC...rsync://[user@]Host [:port]/DEST,仍然是推动作
1)rsync -t *.c foo:src/
把当前目录中所有以.c结尾的文件传输到机器名为foo的src目录中。如果某些文件已经在远程主机中存在,则跳过该文件。
2)rsync -avz foo:src/bar /data/tmp
从机器名为foo的远程主机上把/src/bar目录及其下所有文件传输到本地机器的/data/tmp目录中。注意:源路径src/bar的最后没有斜杠”/”!
源路径的最后是否有斜杠有不同的含义:有斜杠,只是复制目录中的文件;没有斜杠的话,不但要复制目录中的文件,还要复制目录本身!
目的路径的最后有没有斜杠,对传输没有影响。
3)rsync -av host:file1 :file2 host:file{3,4} /dest/
rsync -av host::mod/file{1,2} host::mod/file3 /dest/
rsync -av host::mod/file1 ::mod/file{3,4}
这个例子是rsync更高级一点的用法,使用rsync同时传输多个指定文件。
rsync可以一次传输多个指定的文件,方法是添加多个远程主机参数,或忽略主机名。如上例。
关于rsync命令中的选项:
上面例子中提到了一些选项,rsync的选项有很多,请参考官方文档。常用的选项如下:
- -a:归档模式,保持文件的所有属性,相当于-rlptgoD
- -r:递归模式
- -e:指定一个远程shell
- -z:文件传输时进行压缩处理
- --delete:镜像中常用,删除DEST中那些SRC中不存在的文件
client如何连接rsync daemon:
上面第3个例子已经给出了client连接daemon的语法示例。但是官方文档又把本条目单独列了出来,提醒我们在连接rsync daemon时要注意的几点:
1) daemon模式中的源路径,即SRC,实际上是模块的名称
2) 如果未在双冒号::后面指定源路径,则rsync会列出daemon上所有可能的模块
3) 不要使用--rsh(-e)参数
4) 有些模块可能需要密码认证,你可以使用--password-file选项,来指定密码文件
启用一个rsync daemon来接受client的连接:
除--daemon外,rsync daemon启动时还有其它一些常用选项:
--daemon:
使rsync作为一个daemon运行。daemon有两种启动方式,前面已经说过。对client发出的每一次连接请求,daemon会读取配置文件rsyncd.conf,然后做出相应的回应。
--bwlimit=KBPS:
指定daemon每秒传输的最大千字节。client在请求连接时也可以指定一个--bwlimit值,但该值不能大于daemon端的设置。
--config=FILE:
指定daemon的配置文件。只有当rsync以daemon模式运行的时候,该选项才有效。默认的配置文件为/etc/rsyncd.conf,除非daemon是通过远程shell运行,并且远程user非超级用户,这种情况下,配置文件rsyncd.conf默认存在于当前目录(在$HOME目录中比较典型)。关于通过远程shell启用daemon,见上文。
--port=PORT:
指定daemon监听的端口。
--log-file=FILE:
该选项告诉daemon不要使用rsyncd.conf中指定的log文件,而要使用此处指定的文件。此选项很少用到。
rsync一:工作模式及语法相关推荐
- 【rsync】工作模式及语法
前段日子在网上找rsync daemon的filter等过滤规则的详解,怎么也找不到,哥一怒之下,决定自己动手翻译,于是有了本文- 本文内容翻译自rsync的官方文档:http://rsyn ...
- rsync的介绍及参数详解,配置步骤,工作模式介绍
rsync的介绍及参数详解,配置步骤,工作模式介绍 rsync是类unix系统下的数据镜像备份工具.它是快速增量备份.全量备份工具. Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主 ...
- 程序员简历工作模式_简历的完整形式是什么?
程序员简历工作模式 简历:简历 (CV: Curriculum Vitae) The CV is an abbreviation of Curriculum Vitae. It is a writte ...
- 【嵌入式开发】ARM 处理器工作模式 及 修改方法 ( 处理器模式 | 设置处理器模式 | 程序状态字寄存器 CPSR SPSR | 模式设置代码编写 | 设置 svc 模式 )
一. 处理器工作模式相关介绍 1. 处理器模式简介 (1) 处理器工作模式分类 (2) 处理器不同工作模式区别 (3) Linux 系统运行的模式 (4) 特权模式 说明 (5) 异常模式 (6) 系 ...
- java加密工作模式None_simple1234
simple1234 回答了问题 · 2018-05-25 引入文件 const {ReadCard} = CardReader; 自己编写js文件 import md5 from 'crypto-j ...
- vim编辑器的工作模式
vim编辑器的三种工作模式:命令模式.输入模式.末行模式 打开文件:将准备打开的文件指定为命令行上的一个参数.# vim /etc/hosts 编辑文本 在命令模式中,键的映射不是为了插入所按下的字符 ...
- ARM 寄存器 和 工作模式了解
一. ARM 工作模式 1. ARM7,ARM9,ARM11,处理器有 7 种工作模式:Cortex-A 多了一个监视模式(Monitor) 2. 用户模式:非特权模式,大部分任务执行在这种模式 ...
- esxi ntp服务器地址_NTP的工作原理以及工作模式
NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步.NTP基于UDP报文进行传输,使用的UDP端口 ...
- oracle主备库sync模式,Oracle 探索DG备库undo工作模式
模拟备库出现 ORA-01555 分析备库 undo 工作模式 一: 修改主库 备库 undo 表空间 1.在主库创建undo表空间(会自动同步到备库) SYS@prod>create undo ...
最新文章
- 二维前缀和+差分 HDU6514 Monitor
- 企业管理,难的是什么?
- 手机芯片三国杀:高通、联发科、展讯都想成霸主
- SQL基本语句语法释义
- docker 覆盖 entrypoint_最佳实践,Dockerfile中ENTRYPOINT与CMD指令的区别与建议
- 扩展源_瑞萨电子推出具备反向充电WattShare TRx模式的 15W无线充电电源P9415R接收器,扩展无线电源产品线...
- 笨方法“学习python笔记之文件操作
- 独立站需要用到哪些营销手段?
- java删除相对路径文件夹_Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录...
- EL表达式和JSTL介绍
- c 压缩java解压文件,java 压缩文件 解压缩文件
- ISO9660文件系统分析
- PrestaShop加速11招立刻加速PrestaShop外贸电子商务网站无额外插件
- powerdesign新手入门详细教程
- C++最简单的日期计算
- 恐怖系列丨互联网幕后攻防:咳血的独角兽二
- 山东大赛潍坊赛场圆满落幕,优质方案推动智慧城市建设
- 华泰单因子测试之估值类因子(回归法)
- 如何将caj转换成word
- 一文搞定深度学习入门级电脑硬件配置
热门文章
- 《zabbix用户权限分配管理》-8
- Windows Phone 几种页面间传递数据的方式
- CA证书服务器(4) 证书、CA、PKI
- 十佳自由Linux物理工具
- 职场小窍门:看穿同事性格的16个小动作
- 测中策---我的Web自动化测试思路
- Mysql增强半同步模式_MySQL增强半同步参数rpl_semi_sync_master_wait_point值AFTER_SYNC和AFTER_COMMIT...
- upgrade yum 指定版本_yum upgrade和yum update的区别
- vue 增加js日志输出文件_Vue.JS项目导入导出JSON文件的方案之一,其他项目也可参考...
- Windows10下如何安装配置 perl 环境