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