定义
rsync 是一个快速的,通用的远程及本地文件同步工具。它通过增量传输
算法,仅发传送源文件和目标中的差异部分,来减少通过网络发送的数据量,因此速度相当快。
在 LInux 中常用的远程同步方式有 rsync 和 scp 两种。scp 采用的是全量更新的方式,rsync 采用的是增量更新。当目标文件不存在时,两者的速度相差不大,甚至 scp 不怎么占资源,理论上 rsync 在这种场景下并没有优势。另外一个差异就是,scp 是加密传输的,rsync 则不是。
主要特点
rsync 有两种使用方式,一是通过命令的方式,其使用方法和 cp、scp 无异;另一种是作为服务来使用,通过 rsync 服务器端为基础进行数据镜像同步。搭建 rsync下服务本文不做介绍,有兴趣的读者可自行查阅。下面就是官方文档中介绍的关于rsync的几大优点:
- 可以镜像保存整个目录树和文件系统;
- 可以很容易做到保持原来文件的权限、时间、软硬链接;无须特殊权限即可安装;
- 可以增量同步数据,文件传输效率高,因而同步时间短;
- 可以使用rcp、ssh 等方式来传输文件,当然也可以通过直接的 socket 连接;
- 支持匿名传输,以方便进行网站镜像等;
语法
# 本地使用
rsync [OPTION] … SRC DEST
# 通过远程 Shell 使用
推:rsync [OPTION] … SRC [user@]host:DEST
拉:rsync [OPTION] … [user@]host:SRC DEST
# 访问 rsync 服务
拉: rsync [OPTION…] [USER@]HOST::SRC… [DEST]
推: rsync [OPTION…] SRC… [USER@]HOST::DEST
拉: rsync [OPTION…] rsync://[USER@]HOST[:PORT]/SRC… [DEST]
推: rsync [OPTION…] SRC… rsync://[USER@]HOST[:PORT]/DEST
选项
-a 包含-rtplgoD
-r 同步目录时要加上,类似cp时的-r选项
-v 同步时显示一些信息,让我们知道同步的过程
-l 保留软连接
-L 加上该选项后,同步软链接时会把源文件给同步
-p 保持文件的权限属性
-o 保持文件的属主
-g 保持文件的属组
-D 保持设备文件信息
-t 保持文件的时间属性
--delete 删除DEST中SRC没有的文件
--exclude 过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步
-P 显示同步过程,比如速率,比-v更加详细
-u 加上该选项后,如果DEST中的文件比SRC新,则不同步
-z 传输时压缩
常见用法
本地磁盘同步数据
rsync -a --delete /etc/ /www/
基于ssh的rsync远程同步数据(推)
rsync -av /etc [root@192.168.249.135](mailto:root@192.168.249.135):/www/