rsync 的 --max-size 选项用于限制单个文件传输大小,超过指定值的文件被跳过。支持单位如 m、g、k,可配合 --exclude、--dry-run 等提升实用性,但不控制总流量或并发数。

在 Linux 中使用 rsync 限制单个文件的传输大小,主要靠 --max-size 选项。它不是限制总传输量或文件个数,而是控制“每个被同步的文件”是否参与传输——超过指定大小的文件会被跳过,不发送也不报错(除非配合 -v 才能看到被忽略的提示)。
用法与基本语法
--max-size=SIZE 支持带单位的写法,例如:
-
--max-size=100M:只同步小于 100MB 的文件 -
--max-size=2G:跳过大于或等于 2GB 的文件 -
--max-size=500k:仅处理小于 500KB 的文件 -
--max-size=10485760(字节):等价于10M
实际命令示例
比如要把本地 /data/logs/ 下所有 不超过 5MB 的日志文件同步到远程服务器,同时排除大归档包:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
rsync -av --max-size=5M /data/logs/ user@server:/backup/logs/
执行后,像 access-20260728.log.1.gz(6.2MB)这类文件就不会被传输,而 error-20260728.log(1.3MB)会正常同步。
搭配其他选项更实用
单独用 --max-size 效果有限,常配合以下选项提升可控性:
-
--exclude='*.tar.gz':主动过滤已知的大体积压缩包 -
--dry-run:先预览哪些文件会被跳过(含超限文件),确认无误再正式运行 -
-v或--info=skip1:显示被--max-size跳过的文件名(默认静默跳过) -
--delete-after:若目标端已有超限文件,同步后可选择是否清理(需谨慎)
注意和常见误区
这个选项不适用于限制总传输量或并发文件数:
- 它不影响 rsync 内部块级增量逻辑,只在文件级做准入判断
- 不能和
--bwlimit混淆:--bwlimit控制带宽速率,--max-size控制单文件体积 - 对硬链接、符号链接本身大小判断基于其元数据,不是指向的目标文件大小
- 路径末尾斜杠影响行为:用
/logs/表示同步内容;用/logs会把整个目录当作一个实体判断大小(极少这么做)










