Deployer Rsync Recipe 实战指南:用 rsync 替代 git 完成代码推送与远端热备
DevOpsCI/CDCLI开发工具运维【免费下载链接】deployerThe PHP deployment tool with support for popular frameworks out of the box项目地址https://gitcode.com/gh_mirrors/de/deployer点击查看免费下载本指南围绕 Deployer 官方 contrib 配方contrib/rsync.php对应文档 docs/contrib/rsync.md展开讲解如何用 rsync 把本地代码同步到服务器从而在托管商不支持 git、或希望按文件差异增量推送的场景下替代deploy:update_code。读完本文你将掌握rsync配方全部配置项的含义与默认值、rsync:warmup预热的用法、与 Deployer 内置 Rsync 工具的区分以及如何把它接入自定义deploy任务流。配方是什么rsync配方位于仓库 contrib/rsync.php以标准 contrib 配方方式引入require contrib/rsync.php;也可以在import中按 contrib recipe 方式加载参见 docs/api.md 对 contrib 配方的说明import(contrib/rsync.php);引入后Deployer 会注册两个任务rsync本地推送到远端与rsync:warmup远端 rsync 目标预热。与内置 Rsync 工具的区别务必先读配方文档开头有一处醒目的警告本配方不可与 Deployer 内置的 rsync 工具 src/Utility/Rsync.php 混淆。两者的配置方式完全不同本配方通过set(rsync, [...])配置由rsync与rsync:warmup任务驱动命令在本地执行内置工具则由upload()/download()函数使用见 docs/api.md 中 upload/download 一节其配置键为flags、options、timeout、progress_bar、display_stats且源码默认 flags 为-azPsrc/Utility/Rsync.php。下文所述均为contrib 配方的 rsync 配置。配置项详解配方核心配置为rsync它是一个关联数组所有项均可选默认值即可直接工作。下表汇总各键的接受类型与含义配置键类型含义excludearray发送到服务器时需要排除的模式列表exclude-filestring包含排除模式的文件的绝对路径includearray发送到服务器时需要包含的模式列表include-filestring包含包含模式的文件的绝对路径filterarrayrsync filter 规则数组filter-filestringmerge-file 文件名用于--filtermerge ...filter-perdirstring每个目录扫描的 merge-file 文件名用于--filterdir-merge ...flagsstring调用 rsync 命令时使用的短参数串。避免使用需要参数的 flags这类参数请改用optionsoptionsarray调用 rsync 命令时的长选项数组。不要带--前缀配方会自动加上timeoutint本地运行 rsync 命令的超时时间秒从源码 contrib/rsync.php 可以看到配方注册的默认值注意文档示例里写的是timeout 60而源码真实默认值为300请以源码为准set(rsync, [ exclude [ .git, deploy.php, ], exclude-file false, include [], include-file false, filter [], filter-file false, filter-perdir false, flags rz, options [delete], timeout 300, ]);即默认情况下rsync 只排除.git目录和deploy.php文件本身其余全部推送。默认配置示例以下是文档给出的默认配置可直接复制进deploy.phpset(rsync, [ exclude [ .git, deploy.php, ], exclude-file false, include [], include-file false, filter [], filter-file false, filter-perdir false, flags rz, // 递归 压缩 options [delete], timeout 60, ]);排除项较多时的进阶配置如果排除项很多可以把它们放进一个文件再通过exclude-file引用避免把庞大的数组写进deploy.php。文档同时指出若你使用rsync:warmup任务可以额外设置一些影响速度与行为的选项例如set(rsync, [ exclude [excludes_file], exclude-file /tmp/localdeploys/excludes_file, // 使用绝对路径避免 rsync 路径解析问题 include [], include-file false, filter [], filter-file false, filter-perdir false, flags rzcE, // 递归压缩基于校验和而非时间/大小做增量判断保留可执行位 options [delete, delete-after, force], // 传输成功后删除即使待删目录非空也强制删除 timeout 3600, // 大型仓库或网络不佳时的超时上限 ]);exclude-file对应的 rsync 参数是--exclude-fromfileflags中的c让 rsync 以校验和判断文件差异而非默认的时间/大小E保留可执行位适合含脚本、二进制的项目options中的delete-after在传输成功后删除多余文件force允许删除非空目录delete则保持目标与源一致。两个关键参数rsync_src 与 rsync_destrsync_src按主机配置的 rsync 源路径可依服务器、stage 或环境而异默认是当前目录__DIR__rsync_dest按主机配置的 rsync 目标路径默认等价于发布部署目标{{release_path}}。源码中的默认注册contrib/rsync.phpset(rsync_src, __DIR__); set(rsync_dest, {{release_path}});如果使用本地部署local deploy配方可以把源设为本地的 release 目录例如host(hostname) -hostname(10.10.10.10) -port(22) -set(deploy_path, /your/remote/path/app) -set(rsync_src, /your/local/path/app) -set(rsync_dest, {{release_path}});用法rsync 任务把rsync_src设为本地克隆的仓库推送到rsync_dest。当托管商不允许使用 git 时在deploy任务中把deploy:update_code替换为本任务的rsync即可。rsync:warmup 任务rsync:warmup用于预热远端的 rsync 目标。如果你的deploy任务形如task(deploy, [ deploy:prepare, deploy:release, rsync, deploy:vendors, deploy:symlink, ])-desc(Deploy your project);且rsync_dest设为{{release_path}}那么可以把rsync:warmup放在rsync任务之前或deploy:release之后按方便程度自行决定。从源码看contrib/rsync.phprsync:warmup的行为是$source {{current_path}}; $destination {{deploy_path}}/release; if (test([ -d $(echo $source) ])) { run(rsync -{$config[flags]} {{rsync_options}}{{rsync_excludes}}{{rsync_includes}}{{rsync_filter}} $source/ $destination/); } else { writeln(commentNo way to warmup rsync./comment); }即它把当前 release 目录{{current_path}}同步到{{deploy_path}}/release用于在正式推送前把已有内容在服务器本地“热起来”从而加速后续传输若当前目录不存在则输出提示并不执行。四个自动生成的派生配置rsync_excludes、rsync_includes、rsync_filter、rsync_options这四个配置值在访问时自动生成文档中标注为 Autogenerated源码实现位于 contrib/rsync.phprsync_excludes遍历rsync[exclude]为每个模式生成--excludepattern若exclude-file存在且为可读文件则追加--exclude-fromfilersync_includes同理生成--includepattern与--include-fromfilersync_filter为每个 filter 规则生成--filterrule并支持--filtermerge filter-file与--filterdir-merge filter-perdirrsync_options把rsync[options]中每项加上--前缀后拼接成字符串。所以你在deploy.php中只写set(rsync, [...])即可这四个派生配置无需手动维护。也正因如此options中严禁书写--前缀否则会生成----delete之类的非法参数。任务实现原理本地与远程分支rsync任务本身contrib/rsync.php有几个值得注意的实现细节源/目标非空校验rsync_src与rsync_dest若解析后为空字符串会直接抛出RuntimeException。源码注释解释了原因源为空时 rsync 只会做目录列表退出码 0目标为空时则可能把整个根目录同步掉甚至因delete而误删因此必须显式报错。本地主机分支当目标主机是Localhostsrc/Host/Localhost.php时用runLocally直接执行rsync ... $src/ $dst/远程主机分支通过rsync_rsh($host-connectionOptions())生成-e参数src/Support/helpers.php把主机的端口、密钥、UserKnownHostsFile等 SSH 连接选项拼成ssh -p ... -o ...形式的 rsh 字符串再以runLocally本地发起rsync -e rsh ... userhost:$dst/。rsync_rsh对包含空格的选项会自动加引号并转义单引号测试见 tests/src/Support/HelpersTest.php同时拒绝包含 NUL 字节的选项。真实项目中的落地示例TYPO3 配方仓库内置的 TYPO3 配方 recipe/typo3.php 是 rsync recipe 的典型落地场景通过set(use_rsync, false)控制是否启用 rsync默认 false使用 git定义update_code_task在启用时返回rsync任务替代deploy:update_code实际配置set(rsync, [...])把shared_dirs、shared_files与自定义排除列表合并进exclude并额外include [vendor]、filter [dir-merge,-n /.gitignore]flags avzoptions [delete, keep-dirlinks, links]timeout 600。这个例子展示了如何把共享目录、.gitignore语义与 rsync 增量同步组合使用共享目录和文件如var/cache、var/log、fileadmin被排除而不覆盖vendor被显式包含配合keep-dirlinks/links保护符号链接语义。小结引入方式require contrib/rsync.php;注册rsync与rsync:warmup两个任务配置入口set(rsync, [...])一组数组即可exclude/include/filter负责模式flags/options负责行为timeout控制本地命令超时源与目标rsync_src默认当前目录、rsync_dest默认{{release_path}}可逐主机覆盖适用场景托管商不支持 git 时替代deploy:update_code配合rsync:warmup在服务器本地预热 release 目录加速大仓库推送注意区分本配方与 Deployer 内置upload()/download()使用的 src/Utility/Rsync.php 配置完全不同切勿混用。赞分享DevOpsCI/CDCLI开发工具运维【免费下载链接】deployerThe PHP deployment tool with support for popular frameworks out of the box项目地址https://gitcode.com/gh_mirrors/de/deployer点击查看免费下载相关推荐思源笔记 v3.3.1 版本更新详解ISO 周模板函数、数据库细节修复与开发者 API 增强思源笔记 v3.3.1 版本更新详解ISO 周模板函数、数据库细节修复与开发者 API 增强 本文以思源笔记SiYuan官方发布记录 v3.3.1 繁体中DevOpsCI/CDCLI开发工具运维终极Mac CLI远程文件传输指南scp与rsync实战教程终极Mac CLI远程文件传输指南scp与rsync实战教程 Mac CLI是一款强大的macOS命令行工具专为开发者设计能够自动化管理Mac系统的各种任开发工具终极指南如何使用rsync实现TeslaUSB项目的TeslaCam视频远程备份终极指南如何使用rsync实现TeslaUSB项目的TeslaCam视频远程备份 TeslaUSB是一个为特斯拉行车记录仪设计的智能USB驱动项目它提供了扩上一篇nf_regnet_b1.ra2_in1k与其他timm模型对比如何选择最佳图像分类模型下一篇Python SDK 上手第一步用 MCP 构建集工具、资源、提示词于一身的服务器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

搞定vc含量高的水果数据清洗与源码解析,别再被报错逼疯

搞定vc含量高的水果数据清洗与源码解析,别再被报错逼疯

搞定vc含量高的水果数据清洗与源码解析,别再被报错逼疯 刚跑完那个 vc含量高的水果 数据处理脚本,终端里直接炸出一坨红色的 KeyError 和 IndexError…

2026/9/23 17:03:07 阅读更多 →
3步搞定天翼企业云盘开发:保姆级教程拆解底层逻辑

3步搞定天翼企业云盘开发:保姆级教程拆解底层逻辑

3步搞定天翼企业云盘开发:保姆级教程拆解底层逻辑 很多开发者对着天翼企业云盘(Weiyun)的 API 文档发呆,觉得接口文档写得像天书,或者干脆直接调用示例代码,一旦业务逻辑稍微复杂点,比如文件并发上传、断点续传,代码就崩了。这就是典型的…

2026/9/23 17:03:07 阅读更多 →
网络规划设计方案书怎么写:从IP地址规划到VRRP配置的落地指南

网络规划设计方案书怎么写:从IP地址规划到VRRP配置的落地指南

简介:面向医院信息化建设与网络工程项目,这份网络规划设计方案书以某三级甲等医院为实际场景,完整呈现了从需求分析、业务梳理到落地方案设计的全过程。内容围绕网络分层设计,逐项覆盖核心层、分布层、接入层的作用与配置要点&…

2026/9/23 17:03:07 阅读更多 →

最新新闻

LSTM股票预测工程实践:从数据预处理到回测评估的完整指南

LSTM股票预测工程实践:从数据预处理到回测评估的完整指南

简介:这套基于Python与LSTM的股市预测项目,面向金融量化初学者和深度学习入门者,聚焦如何利用历史行情数据训练循环神经网络模型,并对未来价格走势进行预测与可视化。LSTM通过输入门、遗忘门和输出门控制信息流动,能较…

2026/9/23 17:34:55 阅读更多 →
搞定 when a child is born 报错,源码解析助你调试

搞定 when a child is born 报错,源码解析助你调试

搞定 when a child is born 报错,源码解析助你调试 复制来的代码跑不通,报错信息却像天书,这是很多开发者在接手遗留代码或学习新框架时最常见的崩溃瞬间。别慌,这种时候盲目改参数纯属碰运气,真正的破局点在于 源码解析 。以…

2026/9/23 17:34:55 阅读更多 →
GB/T 36911-2018运输包装标准核心要点解析

GB/T 36911-2018运输包装标准核心要点解析

1. 运输包装标准GB/T 36911-2018核心解读作为从事物流包装行业十二年的老手,我发现很多同行对GB/T 36911-2018的理解还停留在"贴标签"的层面。这个2018年发布的国家标准实际上构建了完整的运输包装技术体系,今天我就用最接地气的方式&#xff…

2026/9/23 17:34:55 阅读更多 →
Redwood 是什么:全栈 React 框架的架构、核心机制与开箱即用的开发体验

Redwood 是什么:全栈 React 框架的架构、核心机制与开箱即用的开发体验

后端前端Web框架开发工具 【免费下载链接】redwood RedwoodGraphQL 项目地址: https://gitcode.com/gh_mirrors/re/redwood 点击查看 免费下载 Redwood 是一个基于 React 的全栈 Web 应用框架,它把 GraphQL、Prisma、Jest、Storybook、Vite、Babel、Typ…

2026/9/23 17:34:55 阅读更多 →
基于JavaWeb的作业提交与批改系统:源码结构、数据库脚本与核心实现

基于JavaWeb的作业提交与批改系统:源码结构、数据库脚本与核心实现

简介:这是一套基于JavaWeb的作业提交与批改系统项目源码,面向计算机相关专业正在做毕设的学生,以及需要项目实战练习的Java学习者,可直接作为毕业设计使用。系统采用B/S结构,后台基于JSP、Servlet与JDBC实现&#xff0…

2026/9/23 17:34:54 阅读更多 →
网易媒体源码解析:3步搞定从教程到实战

网易媒体源码解析:3步搞定从教程到实战

网易媒体源码解析:3步搞定从教程到实战 看了一堆教程还是不会写项目?别急,问题不在你不够努力,而在于你只看了“怎么用”,没看“为什么”。今天我们就以【网易媒体】后端高并发场景为例,通过 源码解析…

2026/9/23 17:33:54 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →