详细介绍了rsync的工作模式及其应用
本文内容翻译自rsync的官方文档:http://rsync.samba.org/ftp/rsync/rsync.html,以及http://rsync.samba.org/ftp/rsync/rsyncd.conf.html,非完整的全文翻译,并且按照我的需要,对原文的相关章节或条目进行了适当的重新编排。官方文档发布日期:26 Mar 2011
### rsync工作模式及语法详解
#### 一、rsync简介
rsync 是一款用于 Unix/Linux 系统的高效文件同步工具,它支持本地文件复制、远程文件复制以及通过网络同步文件等多种方式。rsync 的核心特性在于其差异传输算法(Delta Transfer Algorithm),即只传输源文件与目标文件之间的差异部分,从而极大地提高了文件传输效率。
#### 二、rsync工作模式
rsync 支持两种主要的工作模式:基于远程 shell 的模式(Shell Mode)和守护进程模式(Daemon Mode)。
##### 1. Shell Mode (远程 shell 模式)
在远程 shell 模式下,rsync 可以通过 ssh 或 rsh 等远程 shell 工具来建立连接并进行文件传输。这种方式适用于没有设置 rsync 守护进程的情况。
- **命令示例**:
- 将本地文件传输到远程主机的目录:
```bash
rsync -avz local_file user@remote_host:/path/to/destination
```
- 从远程主机拉取文件到本地:
```bash
rsync -avz user@remote_host:/path/to/source local_destination
```
##### 2. Daemon Mode (守护进程模式)
守护进程模式下,rsync 在服务器端作为守护进程运行,客户端可以通过 TCP 连接直接与之通信,无需经过远程 shell。这种方式更适用于高并发场景下的文件同步任务。
- **配置步骤**:
1. 在服务器端安装 rsync 并启动守护进程(默认监听端口为 873):
```bash
# 安装 rsync
sudo apt-get install rsync
# 启动守护进程
sudo rsync --daemon
```
2. 修改 `/etc/services` 文件添加 rsync 服务:
```plaintext
rsync 873/tcp # 添加此行
```
3. 配置 `/etc/inetd.conf` 文件启用 rsync 服务:
```plaintext
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
```
4. 配置 `rsyncd.conf` 文件指定共享目录等设置。
- **客户端命令示例**:
- 从远程守护进程中拉取文件:
```bash
rsync -avz rsync://remote_host/path/to/module/ local_destination
```
- 上传文件到远程守护进程:
```bash
rsync -avz local_file rsync://remote_host/path/to/module/
```
#### 三、rsync语法
rsync 命令的基本语法如下:
```bash
rsync [options] SRC DEST
```
其中:
- `options`:各种参数选项,如 `-a` 表示归档模式,`-v` 表示详细输出等。
- `SRC`:源文件或目录。
- `DEST`:目标文件或目录。
#### 四、常用命令示例
以下是一些常用的 rsync 命令示例:
##### 示例 1:传输本地文件至远程主机
将当前目录下的所有 `.c` 文件传输至远程主机 `foo` 的 `src/` 目录中:
```bash
rsync -t *.c foo:src/
```
##### 示例 2:同步远程目录至本地
将远程主机 `foo` 的 `src/bar` 目录下的文件同步至本地的 `data/tmp` 目录中,并开启压缩传输:
```bash
rsync -avz foo:src/bar/ data/tmp
```
##### 示例 3:同步多个文件至远程目录
将本地的 `file1` 和 `file2` 文件以及远程主机 `host` 的 `file3` 和 `file4` 文件同步至远程主机 `host` 的 `dest/` 目录中:
```bash
rsync -av file1 file2 host:file{3,4} host:dest/
```
#### 五、高级用法
除了基本用法外,rsync 还支持很多高级功能,例如增量备份、镜像同步等。此外,通过结合其他工具(如 `cron`、`ssh` 等),可以实现定时同步、加密传输等功能。
### 结语
rsync 作为一款强大的文件同步工具,在实际应用场景中具有广泛的用途。无论是简单的文件复制还是复杂的网络同步任务,rsync 都能提供高效的解决方案。通过深入理解其工作原理和命令语法,我们可以更好地利用 rsync 来满足不同的需求。