当前位置:首页 > 文章列表 > 文章 > linux > Linux rsync 怎样只同步变化文件并保留权限

Linux rsync 怎样只同步变化文件并保留权限

来源:17golang原创 2026-10-23 10:30:50 0浏览 收藏

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/ 则把其中的内容放进已有目标目录。这个差异不是性能优化,而是路径语义。

rsync quick check、增量传输、归档模式和目标目录之间关系的浅色工程蓝图说明图
图1:结构说明图,查看 rsync 的 quick check、变化数据、-a 属性保留与目标目录之间的静态关系;这是说明图,不是运行截图。

用预览和校验参数控制调用方体验

正式同步前,可以先用 --dry-run 看 rsync 计划处理哪些对象,再用 -i 显示变更摘要。下面的组合不会真正写入目标目录,适合先确认尾斜杠和权限选项是否符合预期。

# 只预览变化项;-i 显示每个对象的变更摘要,不写入目标
rsync -avni source/ backup/

# 需要按文件内容比较时才启用 -c;它会读取两端文件内容,成本高于默认 quick check
rsync -avci source/ backup/

--checksum(短写法 -c)适合两端修改时间不可信、但必须按内容判断的情况。它不等于“每次都重新传输全部文件”:它改变的是传输前的判断依据,但会增加读取和计算成本。普通备份任务优先使用默认 quick check,并让源端的修改时间在写入或构建环节保持可靠。

rsync 源目录尾斜杠、归档模式、权限属性和目标目录边界的关系说明图
图2:关系说明图,查看源目录内容语义、归档属性集合和目标权限边界的对应关系;这是静态说明图,不是命令运行证据。

远程同步时处理权限、传输和兼容边界

通过 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 只在内容比较确实值得付出读取成本时使用。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Linux ss 怎样查看连接的 TCP 状态变化Linux ss 怎样查看连接的 TCP 状态变化
上一篇
Linux ss 怎样查看连接的 TCP 状态变化
Linux ulimit 怎样判断文件句柄上限
下一篇
Linux ulimit 怎样判断文件句柄上限
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    615次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    654次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    687次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    649次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    477次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码