有趣的 Linux 命令(二)—— rsync 命令

定义

rsync 是一个快速的,通用的远程及本地文件同步工具。它通过增量传输算法,仅发传送源文件和目标中的差异部分,来减少通过网络发送的数据量,因此速度相当快。

在 LInux 中常用的远程同步方式有 rsync 和 scp 两种。scp 采用的是全量更新的方式,rsync 采用的是增量更新。当目标文件不存在时,两者的速度相差不大,甚至 scp 不怎么占资源,理论上 rsync 在这种场景下并没有优势。另外一个差异就是,scp 是加密传输的,rsync 则不是。

主要特点

rsync 有两种使用方式,一是通过命令的方式,其使用方法和 cp、scp 无异;另一种是作为服务来使用,通过 rsync 服务器端为基础进行数据镜像同步。搭建 rsync下服务本文不做介绍,有兴趣的读者可自行查阅。下面就是官方文档中介绍的关于rsync的几大优点:

  1. 可以镜像保存整个目录树和文件系统;
  2. 可以很容易做到保持原来文件的权限、时间、软硬链接;无须特殊权限即可安装;
  3. 可以增量同步数据,文件传输效率高,因而同步时间短;
  4. 可以使用rcp、ssh 等方式来传输文件,当然也可以通过直接的 socket 连接;
  5. 支持匿名传输,以方便进行网站镜像等;

语法

# 本地使用
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 [[email protected]](mailto:[email protected]):/www/

参考链接:

日常运维--rsync同步工具
rsync基本使用详解

你可能感兴趣的:(有趣的 Linux 命令(二)—— rsync 命令)