虚拟化开发工具云原生【免费下载链接】multipassMultipass orchestrates virtual Ubuntu instances项目地址https://gitcode.com/gh_mirrors/mu/multipass点击查看免费下载multipass restore是 Multipass 中用于将实例回滚到某个历史快照时刻状态的命令行工具。本文以官方参考文档为核心结合仓库源码restore.cpp、daemon.cpp、multipass.proto深入讲解其语法、交互流程、--destructive选项、自动快照机制以及底层 gRPC 调用链读完即可在真实环境中安全、熟练地执行实例恢复操作。命令概述multipass restore命令将实例恢复到拍摄指定快照时的状态。快照由multipass snapshot命令创建它记录了恢复实例到同一状态所需的全部信息磁盘内容、配置等。恢复操作会丢弃实例的当前状态并用快照记录的状态取而代之。例如执行以下命令multipass restore relative-lion.snapshot2系统会在继续之前询问你是否想先为实例保存一个快照Do you want to take a snapshot of relative-lion before discarding its current state? (Yes/no):如果确认输出将与下面类似Snapshot taken: relative-lion.snapshot3 Snapshot restored: relative-lion.snapshot2命令语法与参数详解完整的multipass help restore输出如下它解释了所有可用选项Usage: multipass restore [options] instance.snapshot Restore an instance to the state of a previously taken snapshot. Options: -h, --help Displays help on commandline options -v, --verbose Increase logging verbosity. Repeat the v in the short option for more detail. Maximum verbosity is obtained with 4 (or more) vs, i.e. -vvvv. -d, --destructive Discard the current state of the instance Arguments: instance.snapshot The instance to restore and snapshot to use, in instance.snapshot format, where instance is the name of an instance, and snapshot is the name of a snapshot关键参数说明参数含义说明instance.snapshot必选位置参数使用实例名.快照名的点分格式指定目标实例与所用快照例如relative-lion.snapshot2-h, --help帮助选项显示命令行选项帮助-v, --verbose日志级别选项增加日志详细程度重复v可提升详细度最多 4 个v即-vvvv-d, --destructive破坏性选项跳过询问直接丢弃实例的当前状态从客户端源码restore.cpp可以看到该命令的参数解析逻辑命令行只接受恰好一个位置参数少于一个报Need the name of an instance and snapshot to restore.多于一个报Too many arguments supplied.参数必须能被.拆分成两个非空 token否则报Invalid format. Please specify the instance to restore and snapshot to use in the form instance.snapshot.。解析成功后instance、snapshot、destructive来自-d/--destructive是否被设置与verbosity_level被填入RestoreRequest。交互式恢复与自动快照机制如上面的示例所示不带任何附加选项运行时命令会主动提议先拍摄另一张快照。这个自动快照会在实例当前状态被丢弃前保存它其意义在于万一恢复结果不符合预期你仍然可以回到恢复前的状态。该自动快照遵循multipass snapshot命令的默认命名规则即snapshotN其中 N 是该实例迄今拍过的快照总数并且会附带一条说明其用途的自动注释。在示例中如果你运行multipass info relative-lion.snapshot3 | grep Comment你会找到这样的注释Comment: Before restoring snapshot1这条自动注释的格式在守护进程源码daemon.cpp中定义take_snapshot被调用时传入空名称表示走默认命名和注释fmt::format(Before restoring {}, request-snapshot())即Before restoring 快照名。这正是restore文档示例中注释显示为Before restoring snapshot1的原因示例中恢复的是snapshot1。提示与快照相关的名称、注释属性可通过multipass set命令与设置键local.instance-name.snapshot-name.name/local.instance-name.snapshot-name.comment查看和修改详见 local.instance-name.snapshot-name.name 与 local.instance-name.snapshot-name.comment。使用 --destructive 跳过确认如果不想保留恢复前的状态可以使用--destructive或-d选项跳过询问并直接丢弃当前状态。这一点在非交互场景下尤为重要如果命令是以非交互方式运行的即标准输入或标准输出被重定向由于无法向用户询问确认--destructive是必需的否则命令无法继续。从客户端实现看当服务端请求确认但终端不可交互时客户端会输出如下提示并中止流程restore.cppUnable to query client for confirmation. Use --destructive to automatically discard current machine state.而在交互式终端中客户端会弹出Do you want to take a snapshot of instance before discarding its current state? (Yes/no)提示并循环校验输入仅接受 yes/no 类回答restore.cpp只有回答no时才真正执行破坏性丢弃回答 yes 则会先自动拍照再恢复。底层原理gRPC 调用链与守护进程处理restore并非客户端本地操作而是通过 gRPC 与 Multipass 守护进程multipassd协作完成的属于双向流式 RPC。协议定义见 multipass.proto 与 multipass.protorpc restore (stream RestoreRequest) returns (stream RestoreReply); message RestoreRequest { string instance 1; string snapshot 2; bool destructive 3; int32 verbosity_level 4; } message RestoreReply { string log_line 1; string reply_message 2; bool confirm_destructive 3; }整个流程如下客户端请求multipass restore客户端构造RestoreRequest含实例名、快照名、是否破坏性、日志级别并通过RpcMethod::restore分发给守护进程。服务端校验守护进程在 daemon.cpp 中处理请求。它先通过find_instance_and_react在运行实例表中查找目标实例然后校验快照是否存在get_snapshot。状态前置检查只有当实例处于off或stopped状态时才允许恢复否则返回FAILED_PRECONDITION错误Multipass can only restore snapshots of stopped instances.——这一点与snapshot命令相同目前快照功能仅支持Stopped状态的实例见 snapshot 文档。确认交互若未指定--destructive服务端通过RestoreReply.confirm_destructive true向客户端请求确认客户端询问用户后回写RestoreRequest.destructive。若用户选择不丢弃服务端先自动拍一张 Before restoring 快照。执行恢复调用vm_ptr-restore_snapshot(request-snapshot(), vm_specs)真正恢复快照随后根据恢复后的规格更新挂载update_mounts若规格发生变化则持久化实例记录persist_instances。结果回传成功时客户端打印Snapshot restored: instance.snapshot。错误处理方面快照不存在抛出NoSuchSnapshotException映射为NOT_FOUND其他异常映射为INTERNALdaemon.cpp。测试覆盖见 test_daemon_snapshot_restore.cpp 与 test_base_virtual_machine.cpp。常见错误与注意事项实例未停止恢复前实例必须处于Stopped或off状态否则报Multipass can only restore snapshots of stopped instances.。请先使用multipass stop停止实例。快照不存在目标快照不存在时返回NOT_FOUND错误可用multipass list/multipass info确认实例拥有的快照列表。参数格式错误必须严格使用instance.snapshot点分格式且只能有一个位置参数。非交互环境管道、重定向或自动化脚本中运行必须携带-d/--destructive否则无法获得用户确认而中止。破坏性不可逆相对--destructive会直接丢弃当前状态若不使用该选项命令会先自动保存当前状态为snapshotN快照形成可回退的保险。与其他命令配合使用restore通常与以下命令协同工作参考文档的 See also 链接snapshot拍摄快照为restore提供恢复点支持--name自定义快照名与--comment附加注释。list列出实例及其快照。info查看实例详情包括快照名称与注释如grep Comment。delete删除不再需要的快照。set修改快照的name与comment属性。典型工作流先用multipass snapshot instance建立恢复点 → 进行有风险的配置或软件变更 → 出问题时用multipass restore instance.snapshot一键回滚若想保留失败状态以便排查则在提示时回答 yes让 Multipass 自动把变更前的状态留作备份快照。赞分享虚拟化开发工具云原生【免费下载链接】multipassMultipass orchestrates virtual Ubuntu instances项目地址https://gitcode.com/gh_mirrors/mu/multipass点击查看免费下载相关推荐Multipass 的 multipass info 命令完全指南查询实例与快照详情Multipass 的 multipass info 命令完全指南查询实例与快照详情 Multipass 是 Canonical 推出的轻量级虚拟机编排工具虚拟化开发工具云原生Git恢复文件restore命令的精确文件状态恢复Git恢复文件restore命令的精确文件状态恢复 一、痛点与解决方案 你是否曾因误操作导致代码丢失或在多人协作中意外覆盖了重要文件Git作为分布式版本控版本控制开发工具CLIMultipass delete 命令详解实例与快照的删除、恢复与彻底清除Multipass delete 命令详解实例与快照的删除、恢复与彻底清除 Multipass delete 命令完全指南实例与快照的删除、恢复与彻底清除虚拟化开发工具云原生上一篇WarcraftHelper完整指南让经典魔兽争霸3在现代电脑上完美运行的终极方案下一篇如何免费解锁WeMod完整功能Wand-Enhancer终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
degit 项目脚手架工具实战指南:从快照下载到 degit.json 后置动作的完整解析 开发工具CLI 【免费下载链接】degit Straightforward project scaffolding 项目地址: https://gitcode.com/gh_mirrors/de/degit 点击查看 免费下载 本指南围绕 degit 这一"直接了当的项目脚手架"(straightforward project scaffolding&#… · 2026/9/26 2:56:36
Spring AI Alibaba实战:手把手教你构建A2A多智能体协作系统-CSDN博客 首屏导读 本教程配套付费专栏: 大模型工程师修炼手记 19.9 元(AI 编程 / Agent 实战 | 本文同主题系统课程) AI时代程序员的自我提升 49.9 元(AI 时代成长方法论)。 单篇不过瘾?订阅解锁全量源… · 2026/9/26 2:56:36
Baserow 文件上传与存储指南:从文件入库到访问控制 Baserow 文件上传与存储指南:从文件入库到访问控制 【免费下载链接】baserow Build databases, automations, apps & agents with AI — no code. Open source platform available on cloud and self-hosted. GDPR, HIPAA, SOC 2 compliant. Best Airtable alte… · 2026/9/26 2:56:36
终端的庖丁解牛 根因
早期计算机是大型主机,主机本体放在机房,运算、存储全部由主机完成。操作人员不可能趴在主机上操作,于是就造出终端:本身没有算力,只负责接收人的输入、展示主机返回的输出,通过线缆连接远端主机。
到… · 2026/9/26 4:14:08
C盘爆红、电脑卡顿,先别急着重装——按这四步走,比乱装清理软件管用 C盘爆红、电脑卡顿,先别急着重装——按这四步走,比乱装清理软件管用
遇到 C 盘飘红、电脑越用越卡,很多人的第一反应是:赶紧下一个"加速神器",或者干脆重装系统。其实这两条路都绕远了。
更实在的做法是&… · 2026/9/26 4:14:08
2026查重工具排行实测踩坑:千万级文本库校验的性能坑点梳理 上周运营妹子甩给我一张Excel表,说要做公司内容合规系统的底层校验模块,让我别光信网上传的2026查重工具排行,自己测了再上线。本来一开始我以为照着公开的参数拼几个主流接口,一周就能交付,结果头天测就给我整出个生产… · 2026/9/26 4:14:02
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46