<?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>Snapshots on inetshell</title><link>https://inet.sh/es/tags/snapshots/</link><description>Recent content in Snapshots on inetshell</description><generator>Hugo</generator><language>es</language><lastBuildDate>Wed, 19 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://inet.sh/es/tags/snapshots/index.xml" rel="self" type="application/rss+xml"/><item><title>Proteger snapshots ZFS con hold para que no las borren</title><link>https://inet.sh/es/posts/zfs/hold-proteger-snapshot/</link><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/es/posts/zfs/hold-proteger-snapshot/</guid><description>zfs hold y zfs release: un tag keep en el snapshot hace que zfs destroy falle con dataset is busy.</description><content:encoded><![CDATA[<h2 id="en-corto">En corto</h2>
<p><code>zfs hold keep pool/dataset@snap</code> — <code>zfs destroy</code> falla con <em>dataset is busy</em>. Suelta con <code>zfs release</code>.</p>
<p>Los scripts de retención (<code>zfs destroy -r …@auto-…</code>) no preguntan. Un <strong>hold</strong> es un candado con nombre sobre un snapshot: <code>destroy</code> falla hasta que sueltas el tag.</p>
<p>Sirve para la snapshot desde la que estás haciendo <code>zfs send</code>, o para la que es el único rollback conocido después de un upgrade.</p>
<h2 id="poner-el-hold">Poner el hold</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">zfs hold keep tank/home/cindys@snap1
</span></span></code></pre></td></tr></table>
</div>
</div><p>Recursivo en todo un árbol (primero snapshot, luego hold):</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">zfs snapshot -r tank/home@now
</span></span><span class="line"><span class="cl">zfs hold -r keep tank/home@now
</span></span></code></pre></td></tr></table>
</div>
</div><p>El tag (<code>keep</code>) es libre, pero <strong>único por snapshot</strong>. Puedes tener <code>keep</code> y <code>offsite</code> a la vez en el mismo <code>@now</code>.</p>
<h2 id="qué-ves-al-destruir">Qué ves al destruir</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">zfs destroy tank/home/cindys@snap1
</span></span><span class="line"><span class="cl"><span class="c1"># cannot destroy &#39;tank/home/cindys@snap1&#39;: dataset is busy</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Eso es el hold, no un dataset montado. <code>zfs destroy -d</code> marca el snapshot para borrar <strong>cuando</strong> no queden holds (diferido), no lo ignora.</p>
<h2 id="listar">Listar</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">zfs holds tank/home@now
</span></span><span class="line"><span class="cl">zfs holds -r tank/home@now
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">NAME                  TAG   TIMESTAMP
</span></span><span class="line"><span class="cl">tank/home@now         keep  Thu Jul 15 11:25:39 2010
</span></span><span class="line"><span class="cl">tank/home/cindys@now  keep  Thu Jul 15 11:25:39 2010
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="soltar-y-entonces-sí-destruir">Soltar y entonces sí destruir</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">zfs release -r keep tank/home@now
</span></span><span class="line"><span class="cl">zfs destroy -r tank/home@now
</span></span></code></pre></td></tr></table>
</div>
</div><p>Si un <code>send</code> largo sigue corriendo, espera a que termine: el hold está precisamente para que el prune no te coma el cursor incremental.</p>
<p>Docs de Oracle (el mecanismo es el mismo en OpenZFS): <a href="https://docs.oracle.com/cd/E19253-01/819-5461/gjdfk/index.html">Holding ZFS snapshots</a>.</p>
<p>Ver también: <a href="/es/posts/zfs/send-sin-cifrar-a-cifrado/">send a dataset cifrado</a>.</p>
]]></content:encoded></item></channel></rss>