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