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),仅供参考
企业数字化 ERP 产品动态
相关推荐
3步搞定雌兔眼迷离最佳实践,环境配置不再卡半天 3步搞定雌兔眼迷离最佳实践,环境配置不再卡半天 配置环境就卡半天,这大概是很多开发者接手新任务时的第一感受。依赖冲突、版本不匹配、网络超时,每一个坑都能让人心态崩盘。要解决这个“雌兔眼迷离”般的混乱局面,核心不在于多试几次,而在于建立一套可… · 2026/9/23 17:03:53
Apache Druid NULL 值处理实战指南:SQL 兼容模式下的字符串与数值列查询 数据库OLAP大数据后端 【免费下载链接】druid Apache Druid: a high performance real-time analytics database. 项目地址: https://gitcode.com/gh_mirrors/druid6/druid 点击查看 免费下载 本文是一份面向 Druid 用户的 NULL 值处理实操教程。文章围绕 Apache D… · 2026/9/23 17:03:53
TSDX 2.0.0 发布解析:基于 Rust 工具链的零配置 TypeScript 包开发 CLI 重写 开发工具CLI构建工具 【免费下载链接】tsdx Zero-config CLI for TypeScript package development 项目地址: https://gitcode.com/gh_mirrors/ts/tsdx 点击查看 免费下载 TSDX 2.0.0 是一次从零开始(complete rewrite)的大版本发布… · 2026/9/23 17:03:53
黎曼几何与黎曼流形:从度量张量到测地线的核心概念与应用 黎曼几何与黎曼流形,这个标题我盯着看了很久。作为一个在数据科学和理论物理边缘反复横跳的人,我第一次认真啃这个概念是因为做高维数据嵌入时,发现欧氏距离在很多问题上根本不能打。后来才明白,问题不在于距离公式本身࿰… · 2026/9/23 17:47:43
点画线在运维脚本中的5个高频面试题坑 点画线在运维脚本中的5个高频面试题坑 版本升级后 API 全变了,昨天还跑通的代码今天直接报错,这种崩溃感谁懂?我带过不少中小施工企业的运维团队,发现大家卡在“点画线”这个看似简单的绘图概念上,往往是因为没搞懂底层逻辑,导致在自动化报表生成… · 2026/9/23 17:47:43
长期照护师证哪家培训机构靠谱?从报名学习到考试拿证,报考全攻略 近两年,长期照护师证的报考热度持续上升,想考的人不少,但绝大多数人卡在了同一个问题上:培训机构那么多,到底哪家靠谱?网上搜一圈,广告铺天盖地、说法互相矛盾,越看越不知道信谁。本… · 2026/9/23 17:47:43
心理咨询师证哪家培训机构靠谱?从报名学习到考试拿证,报考全攻略 近两年,心理咨询师证的报考热度持续上升,想考的人不少,但绝大多数人卡在了同一个问题上:培训机构那么多,到底哪家靠谱?网上搜一圈,广告铺天盖地、说法互相矛盾,越看越不知道信谁。本… · 2026/9/23 17:47:43
房建人转行必知:SM1证书与App开发保姆级教程 房建人转行必知:SM1证书与App开发保姆级教程 版本升级后 API 全变了,是不是让你抓狂?很多刚接触 SM1 的朋友,尤其是从传统房建工程转行做移动端开发的伙伴,常被新旧接口差异搞得晕头转向。这篇保姆级教程,专为解决这个痛点而生,帮你快… · 2026/9/23 17:47:30
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29