> 文件与目录管理 > 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 选项在实际同步之前检查预期结果。这对于防止意外删除或包含文件至关重要。



相同类别命令