> 文件与目录管理 > rsync

rsync: 文件同步与备份(使用 include 选项)

rsync 是一个强大的实用程序,用于在本地和远程系统之间高效地同步文件和目录。特别是,使用 `--include` 选项可以将符合特定模式的文件或目录包含在同步目标中,这在复杂的备份和部署场景中非常有用。本指南侧重于 rsync 的基本用法以及 `--include` 选项的应用。

概述

rsync 通过仅传输更改过的文件来节省网络带宽,并允许通过 `--include` 和 `--exclude` 选项精细控制要传输的文件/目录。`--include` 用于包含特定模式,`--exclude` 用于排除特定模式。这两个选项的顺序很重要。

主要特点

  • 增量传输:仅传输更改过的文件,效率高
  • 远程同步:可通过 SSH 等与远程服务器同步
  • 灵活过滤:通过 `--include` 和 `--exclude` 选项精细控制传输目标
  • 属性保留:保留文件权限、所有权、时间戳等多种属性

主要选项

rsync 的各种选项中,与 `--include` 选项一起常用的主要选项。

过滤选项

基本操作和效率选项

生成的命令:

请尝试组合命令。

描述:

`rsync` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

使用 rsync 的 `--include` 选项的各种同步场景示例。

仅包含特定扩展名的文件进行同步

rsync -av --include='*.txt' --exclude='*' src/ dest/

将当前目录 'src' 文件夹中扩展名为 '.txt' 的文件同步到 'dest' 文件夹。所有其他文件将被排除。

仅包含特定目录进行同步

rsync -av --include='data/***' --exclude='*' src/ dest/

将 'src' 文件夹中的 'data/' 目录及其所有内容同步到 'dest' 文件夹。所有其他文件/目录将被排除。

包含/排除多个模式进行同步

rsync -av --exclude='*.log' --include='report/***' --include='*.txt' --exclude='*' src/ dest/

从 'src' 中排除 '.log' 文件,并将 'report/' 目录和 '.txt' 文件同步到 'dest'。其余文件将被排除。

使用试运行测试包含/排除规则

rsync -avn --include='*.txt' --exclude='*' src/ dest/

在不实际同步的情况下检查过滤规则的应用方式。此命令仅输出将传输哪些文件。

从远程服务器获取特定文件

rsync -av --include='*.conf' --exclude='*' user@remote_host:/remote/path/ ./local/path/

将远程服务器 '/remote/path/' 中的 '.conf' 文件同步到本地的 './local/path/'。

提示与注意事项

有效使用 rsync 的 `--include` 和 `--exclude` 选项的提示和注意事项。

过滤规则顺序的重要性

`--include` 和 `--exclude` 选项按照它们在命令行中出现的顺序进行处理。首先匹配的规则具有优先权。因此,通常的做法是将更具体的规则放在前面,将更通用的规则放在后面。

  • 示例 1: `--include='specific_file' --exclude='*'` (仅包含特定文件,排除其余所有文件)
  • 示例 2: `--exclude='*.tmp' --include='*'` (包含所有文件,但排除 .tmp 文件)

通配符和模式匹配

模式匹配可以使用各种通配符。

  • `*`: 所有字符串(不跨越目录边界)
  • `?`: 单个字符
  • `[chars]`: 括号内任意一个字符
  • `***`: 跨越目录边界的所有字符串(递归匹配)

斜杠(/)的含义

模式末尾是否有斜杠会影响其行为。

  • `dir/`: 适用于目录 'dir' 本身及其所有内容。
  • `file_or_dir`: 适用于名称为 'file_or_dir' 的文件或目录。

利用试运行 (`-n`)

在使用复杂的过滤规则时,建议始终使用 `-n` 或 `--dry-run` 选项在实际同步之前检查预期结果。这对于防止意外删除或包含文件至关重要。


相同类别命令