rsync学习
jopen
10年前
一、示例
以下面两个目录为例子
src目录结构
➜ tree src src └── demo.py
dest目录结构
➜ tree dest dest └── hello.py
1. 文件同步
➜ rsync -v src/demo.py dest demo.py sent 85 bytes received 35 bytes 240.00 bytes/sec total size is 0 speedup is 0.00
2. 目录同步
➜ rsync -av src/ dest sending incremental file list ./ demo.py sent 118 bytes received 38 bytes 312.00 bytes/sec total size is 0 speedup is 0.00
3. 远程目录同步
➜ rsync -av src/ wyq@localhost:~/dest wyq@localhost's password: sending incremental file list ./ demo.py sent 118 bytes received 38 bytes 34.67 bytes/sec total size is 0 speedup is 0.00
二、介绍
rsync(remote sync)远程同步工具. 使用rsync算法,只传送两个文件不同的部分, 而不是每次都整份传送,因此速度相当快. 运行Rsync服务器的机器也叫备份服务,一个Rsync服务器可同时备份多个客户端的数据; 也可以多个Rsync服务器备份一个客户端的数据。
rsync服务器打开873端口, 等待对方Rsync连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。
rsync支持大多数linux系统,windows也有相应版本,比较知名的有cwRsync和Sync2NAS。
三、基本特点
1.可以镜像保存整个目录树和文件系统;
2.可以很容易做到保持原来文件的权限、时间、软硬链接等;
3.无须特殊权限即可安装;
4.优化的流程,文件传输效率高;
5.可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;
6.支持匿名传输。
四、语法
本地: rsync [OPTION...] SRC... [DEST] Access via remote shell(ssh) 获取: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 推送: rsync [OPTION...] SRC... [USER@]HOST:DEST Access via rsync daemon:(rsync服务器) Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
* ":" 分隔符就启动这种模式
* "::" 分隔符启动daemon模式
* 传输方式有两种:rsync-daemon、ssh. daemon方式缺乏灵活性;ssh方式,灵活,速度快,安全性高,但是cpu消耗高.一般用ssh.
五、选项
一般都使用azv选项
-v, --verbose 详细模式
-a, archive 归档模式,表示以递归方式传输文件,并保持所有文件属性
-r, --recursive 对子目录以递归方式处理
-z, --compress 传输时对数据进行压缩
-b, --backup 创建备份,存在同名文件,将老的重新命名为~filename. 可以使用--suffix指定不同的备份文件前缀.
-l, --links 保留软链接
-L, --copy-links 像对待常规文件一样处理软链接
-e, --rsh=COMMAND 指定使用rsh, ssh方式进行数据同步
--force 强制删除目录,即使不为空
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
-t, --time 保持文件时间信息
-o, --owner 保持文件属主信息
-p, --perms 保持文件权限
-g, --group 保持文件属组信息
-q, --quiet 精简输出模式
-c, --checksum 打开校验模式,强制对文件传输进行校验
--progress 显示数据镜像同步的过程
--delete 以rsync服务器端为基础进行数据镜像同步,保持与rsync服务器目录完全一致.
--delete-excluded 同样删除接收端那些被该选项指定排除的文件
--delete-after 传输结束以后再删除
--exclude=PATTERN 排除不需要传输的文件类型
--partial 保留因故没有完全传输的文件,以加快随后的再次传输
--port=PORT 指定其它rsync服务器端口
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second
六、优点与缺点
优点
安全、备份迅速、增量备份,可以解决实时性要求不高的需求.
缺点
rsync需要扫描所有文件后进行对比,然后进行查量传输,如果文件很大,扫描文件非常耗时,而且发生变化的文件往往是很少一部分,因此比较低效.
rsync不能实时监测,两次触发动作会有时间差,导致服务器和客户端数据出现不一致。