Linux rsync 怎样只同步变化文件并保留权限
Linux 上想“只同步变化文件并保留权限”,最小写法通常是 rsync -a 源目录/ 目标目录/。rsync 默认用文件大小和最后修改时间做 quick check,判断不需要更新的文件会跳过数据传输;-a 是归档模式,包含递归、权限、时间、属主、组等基础属性的保留。这里的“只同步变化”不是只比较文件内容,而是先用快速属性判断,再对需要更新的文件使用增量传输。
目录同步的关键只有两件事:用-a保留权限等属性,用源目录尾部的/明确同步“目录内容”而不是再套一层同名目录。
官方地址:https://download.samba.org/pub/rsync/rsync.1
先把同步接口的两个目标分开
rsync 的调用方目标可以拆成“数据选择”和“属性处理”。数据选择由 quick check 负责:默认关注文件大小和修改时间,属性看起来没有变化时,文件数据通常不必重新发送。对于确实需要传输的文件,rsync 还会用 delta-transfer 算法减少网络上重复的数据。
权限保留则由参数决定。归档模式 -a 等价于一组常用选项,包含 -r 递归目录、-l 保留符号链接、-p 保留权限、-t 保留修改时间、-g 保留组、-o 保留属主以及设备文件相关选项。它适合目录镜像的默认场景,但不代表普通用户一定有权在目标端写入属主或组。
用 -a 写出最小的变化同步命令
本地目录同步可以这样写。命令里的中文注释说明参数职责,示例本身不会把本机路径当成固定配置。
# 只把 source 目录的内容同步到 backup,保留递归、权限和时间 rsync -a source/ backup/ # -v 只增加可读的传输信息;尾部 / 表示同步 source 的内容 rsync -av source/ backup/
如果把源路径写成 source 而不是 source/,目标端通常会出现 backup/source 这一层;写成 source/ 则把其中的内容放进已有目标目录。这个差异不是性能优化,而是路径语义。

用预览和校验参数控制调用方体验
正式同步前,可以先用 --dry-run 看 rsync 计划处理哪些对象,再用 -i 显示变更摘要。下面的组合不会真正写入目标目录,适合先确认尾斜杠和权限选项是否符合预期。
# 只预览变化项;-i 显示每个对象的变更摘要,不写入目标 rsync -avni source/ backup/ # 需要按文件内容比较时才启用 -c;它会读取两端文件内容,成本高于默认 quick check rsync -avci source/ backup/
--checksum(短写法 -c)适合两端修改时间不可信、但必须按内容判断的情况。它不等于“每次都重新传输全部文件”:它改变的是传输前的判断依据,但会增加读取和计算成本。普通备份任务优先使用默认 quick check,并让源端的修改时间在写入或构建环节保持可靠。

远程同步时处理权限、传输和兼容边界
通过 SSH 传到另一台 Linux 主机时,路径使用单个冒号,rsync 通常通过 SSH 建立远程 shell。两端都要安装 rsync,目标登录用户还要对目标目录有写权限。
# 通过 SSH 把源目录内容同步到远程目录,并保留可保留的属性 rsync -av source/ deploy@example.com:/srv/app/ # 先用预览确认远程路径和权限变化,再进行正式同步 rsync -avni source/ deploy@example.com:/srv/app/
如果目标用户不是 root,-a 中的属主和组不一定能够原样落地;权限和时间也会受目标文件系统、挂载选项以及 umask 影响。可以先把要求收窄为 -rltp,明确保留递归、链接、时间和权限,避免把“保留属主”误当成普通用户一定能完成的动作。
单冒号的远程 shell 传输通常经过 SSH 并加密;双冒号或 rsync:// 是 rsync daemon 语法,是否加密取决于额外的传输配置。不要把 daemon 密码直接放到命令行,脚本场景应使用权限收紧的密码文件或受控的 SSH 凭据。
相关问题
文件内容变了但 rsync 没有同步,为什么?
默认 quick check 主要看大小和修改时间。如果上游程序原地改写文件却恢复了旧时间,或者两端时钟和时间戳不可靠,快速判断可能不适合这个任务;此时可以临时使用 -c,并修正生成文件的时间戳管理。
为什么权限没有完全保留?
-a 包含权限和属主等属性,但目标登录用户需要具备相应能力;跨文件系统、ACL、扩展属性和 Windows 兼容层也可能需要额外选项,不能只看命令是否带了 -a。
日常目录同步可以先记住这条组合:-a 负责归档属性,源目录尾部的 / 负责内容语义,默认 quick check 负责快速筛选变化,-c 只在内容比较确实值得付出读取成本时使用。
Linux ss 怎样查看连接的 TCP 状态变化
- 上一篇
- Linux ss 怎样查看连接的 TCP 状态变化
- 下一篇
- Linux ulimit 怎样判断文件句柄上限
-
- 文章 · linux | 1小时前 |
- Linux ulimit 怎样判断文件句柄上限
- 125浏览 收藏
-
- 文章 · linux | 1小时前 |
- Linux ss 怎样查看连接的 TCP 状态变化
- 335浏览 收藏
-
- 文章 · linux | 1小时前 | 内存 · linux运维 · 性能排查 · Linux 内存诊断 /proc/meminfo MemAvailable Cached
- Linux /proc/meminfo 怎样区分缓存和可用内存
- 157浏览 收藏
-
- 文章 · linux | 1小时前 |
- Linux namespace 怎样查看进程所在网络空间
- 240浏览 收藏
-
- 文章 · linux | 1小时前 |
- Linux io_uring 怎样理解提交队列和完成队列
- 387浏览 收藏
-
- 文章 · linux | 1小时前 |
- Linux journalctl 怎样按时间和服务过滤日志
- 179浏览 收藏
-
- 文章 · linux | 1小时前 |
- Linux systemd ExecStartPre 怎样在启动前检查配置文件
- 284浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux cgroup v2 怎样读取进程 CPU 使用量
- 250浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux cgroup v2 memory.swap.max 怎样限制交换空间
- 336浏览 收藏
-
- 文章 · linux | 1天前 |
- systemd-analyze calendar 校验 OnCalendar 表达式的实用方法
- 384浏览 收藏
-
- 文章 · linux | 1天前 |
- Linux find 大小时间 怎样处理
- 490浏览 收藏
-
- 文章 · linux | 1天前 | Linux · Linux memory.max memory.high cgroups v2
- Linux cgroups v2 内存 怎样处理
- 126浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 615次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 654次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 687次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 649次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 477次使用
-
- 百度网盘怎么自动备份手机照片?和同步盘、分享文件有什么区别
- 2026-07-15 489浏览
-
- Docker Compose Watch 的 rebuild 和 sync+restart 怎么选
- 2026-10-06 244浏览
-
- Linux rsync 同步目录如何排除文件并保留权限?安全命令配方
- 2026-07-02 186浏览
-
- Linux rsync 大目录同步慢怎么优化:用文件清单和分批校验把 18MB/s 拉回 92MB/s
- 2026-07-13 140浏览
-
- Linux rsync 复制后文件时间不对:--times、时区显示与验收命令
- 2026-08-25 446浏览

