<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Backups · XB 现场笔记</title><link>https://www.xbcatm.com/zh/tags/backups/</link><description>基于 HTTP、DNS、TLS、Caddy、SSH、发布与恢复的可复现运维现场笔记。</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://www.xbcatm.com/zh/tags/backups/index.xml" rel="self" type="application/rss+xml"/><item><title>备份只有在演练过恢复之后才有用</title><link>https://www.xbcatm.com/zh/notes/backups-are-only-useful-after-a-restore-rehearsal/</link><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.xbcatm.com/zh/notes/backups-are-only-useful-after-a-restore-rehearsal/</guid><description>一份备份计划应证明重要文件能被找到、验证并恢复。</description><content:encoded>&lt;p&gt;&amp;ldquo;我们有备份&amp;quot;还不是一种恢复能力。一份有用的备份有已知范围、已知新鲜度、一个验证步骤，以及一份确有人实际跑过恢复流程。&lt;/p&gt;
&lt;h2 id="定义恢复单元"&gt;定义恢复单元&lt;/h2&gt;
&lt;p&gt;对静态站点，源码仓库与生成制品用途不同。仓库是权威输入；制品是恢复最近发布版本的最快方式。请把两者的区别说清楚。&lt;/p&gt;
&lt;p&gt;至少记录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;源码提交或归档标识；&lt;/li&gt;
&lt;li&gt;生成器与主题版本；&lt;/li&gt;
&lt;li&gt;制品包含的文件列表；&lt;/li&gt;
&lt;li&gt;重要下载的校验和；&lt;/li&gt;
&lt;li&gt;保留期限与存储位置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不要把凭据、私钥、Cookie 或访问令牌放进网站备份。它们应属于独立的机密管理流程。&lt;/p&gt;
&lt;h2 id="存储前先验证"&gt;存储前先验证&lt;/h2&gt;
&lt;p&gt;打不开的归档不是备份。一个最小的验证循环如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -czf site-2026-08-22.tar.gz public/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -tzf site-2026-08-22.tar.gz &amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sha256sum site-2026-08-22.tar.gz &amp;gt; site-2026-08-22.tar.gz.sha256
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;校验和验证的是被存储的这个文件，并不能证明所有应用层面的假设都正确。这正是为什么仍需要一次恢复演练。&lt;/p&gt;
&lt;h2 id="在某个可丢弃的地方恢复"&gt;在某个可丢弃的地方恢复&lt;/h2&gt;
&lt;p&gt;把归档解包到临时目录或隔离主机，然后检查入口点与一个有代表性的资源。不要用覆盖唯一活动副本的方式测试恢复。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;restore_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;mktemp -d&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar -xzf site-2026-08-22.tar.gz -C &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$restore_dir&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;test&lt;/span&gt; -s &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$restore_dir&lt;/span&gt;&lt;span class="s2"&gt;/public/index.html&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;test&lt;/span&gt; -s &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$restore_dir&lt;/span&gt;&lt;span class="s2"&gt;/public/404.html&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这条命令刻意很平凡。演练应在事故到来之前，暴露出缺失文件、错误权限或未记录的依赖。&lt;/p&gt;
&lt;h2 id="诚实地度量新鲜度"&gt;诚实地度量新鲜度&lt;/h2&gt;
&lt;p&gt;备份日程只有在相对可能丢失的工作量时才有意义。如果源码一个月才变一次，每日快照可能不必要；如果某个资源每小时更新，一次月度归档又不够。&lt;/p&gt;
&lt;p&gt;写下目标恢复点与恢复时间，再选择能满足这些目标的存储与检查。当最后一次经过验证的恢复备份已经陈旧时，不要宣称&amp;quot;连续保护&amp;rdquo;。&lt;/p&gt;
&lt;h2 id="来源"&gt;来源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.gnu.org/software/tar/manual/tar.html"&gt;GNU tar manual&lt;/a&gt;，归档创建与验证行为，已核验 2026-08-22。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.xbcatm.com/zh/resources/"&gt;静态网站发布检查清单&lt;/a&gt;，本地配套资源。&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item></channel></rss>