<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ZFSRecv — offsite ZFS replication on ZFSRecv</title>
    <link>https://www.zfsrecv.com/</link>
    <description>Recent content in ZFSRecv — offsite ZFS replication on ZFSRecv</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <atom:link href="https://www.zfsrecv.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Quickstart</title>
      <link>https://www.zfsrecv.com/docs/quickstart/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.zfsrecv.com/docs/quickstart/</guid>
      <description>&lt;p&gt;You need a ZFS pool running OpenZFS and a ZFSRecv.com API token.&#xA;No other tools, libraries, or applications required, the send is plain &lt;code&gt;zfs send&lt;/code&gt; piped over HTTPS.&lt;/p&gt;&#xA;&lt;h2 id=&#34;create-an-account&#34;&gt;Create an account&lt;/h2&gt;&#xA;&lt;p&gt;A pool on ZFSRecv is the receive target for your dataset trees. Create one from your&#xA;&lt;a href=&#34;https://www.zfsrecv.com/account/&#34;&gt;account page&lt;/a&gt; — sign up first if you don&amp;rsquo;t have one yet — and pick a region:&#xA;&lt;code&gt;tank&lt;/code&gt; in the US Southwest region becomes &lt;code&gt;us-sw-01.zfsrecv.com/v1/recv/tank&lt;/code&gt;. Your API&#xA;token is shown once, right there when the pool is created — copy it immediately, and save it&#xA;somewhere safe, as it isn&amp;rsquo;t displayed again.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Raw encrypted sends</title>
      <link>https://www.zfsrecv.com/docs/raw-sends/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.zfsrecv.com/docs/raw-sends/</guid>
      <description>&lt;p&gt;With &lt;code&gt;zfs send -w&lt;/code&gt; the blocks leave your pool exactly as they sit on disk: still&#xA;encrypted, still compressed, never decrypted in flight. The receiving side stores&#xA;ciphertext it has no key for.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-we-can-see&#34;&gt;What we can see&lt;/h2&gt;&#xA;&lt;p&gt;Raw streams still carry enough metadata for ZFS to reconstruct the dataset tree, so&#xA;the endpoint necessarily knows structure without knowing contents.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Visible&lt;/th&gt;&#xA;          &lt;th&gt;Not visible&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Dataset names and hierarchy&lt;/td&gt;&#xA;          &lt;td&gt;File names and directory contents&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Snapshot names and timestamps&lt;/td&gt;&#xA;          &lt;td&gt;File data&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Logical and physical sizes&lt;/td&gt;&#xA;          &lt;td&gt;Properties marked sensitive&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Encryption root and key GUID&lt;/td&gt;&#xA;          &lt;td&gt;Your wrapping key or passphrase&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&#xA;&lt;div class=&#34;callout bp&#34;&gt;&lt;span class=&#34;corner tl&#34;&gt;&lt;/span&gt;&lt;span class=&#34;corner tr&#34;&gt;&lt;/span&gt;&lt;span class=&#34;corner bl&#34;&gt;&lt;/span&gt;&lt;span class=&#34;corner br&#34;&gt;&lt;/span&gt;&#xA;  &lt;div class=&#34;callout-title mono&#34;&gt;Keep your keys&lt;/div&gt;&#xA;  &lt;div class=&#34;callout-body&#34;&gt;We never receive a key. If you lose your wrapping key, the pool&amp;rsquo;s contents are&#xA;unrecoverable. by both you us alike. Store a break-glass copy of your key&#xA;offline, somewhere you trust.&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;requirements&#34;&gt;Requirements&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The dataset must already be encrypted at rest on the sending pool. &lt;code&gt;-w&lt;/code&gt; does not&#xA;encrypt anything itself; it declines to decrypt.&lt;/li&gt;&#xA;&lt;li&gt;Sender and receiver must agree on feature flags. Raw sends fail if the receiving&#xA;pool lacks a feature your stream depends on, our endpoints track OpenZFS release&#xA;and support all of the latest features.&lt;/li&gt;&#xA;&lt;li&gt;Increments must chain from a snapshot that was itself sent raw. Mixing raw and&#xA;regular sends in one chain is rejected.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;verifying-a-chain&#34;&gt;Verifying a chain&lt;/h2&gt;&#xA;&lt;p&gt;Every snapshot&amp;rsquo;s GUID is included in &lt;a href=&#34;https://www.zfsrecv.com/docs/api/#listing-datasets-and-snapshots&#34;&gt;&lt;code&gt;GET /v1/detailed&lt;/code&gt;&lt;/a&gt;&#xA;alongside its space accounting. Compare GUIDs across an incremental chain the same way&#xA;&lt;code&gt;zfs get guid&lt;/code&gt; would locally, to confirm nothing is missing or out of order before you rely&#xA;on it for a restore.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTP API</title>
      <link>https://www.zfsrecv.com/docs/api/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.zfsrecv.com/docs/api/</guid>
      <description>&lt;p&gt;The entire client-facing surface is plain, synchronous HTTPS. There&amp;rsquo;s no agent, no SDK, and&#xA;no framing on top of a &lt;code&gt;zfs send&lt;/code&gt; stream — just stock &lt;code&gt;zfs send | curl -T -&lt;/code&gt; or&#xA;&lt;code&gt;curl | zfs receive&lt;/code&gt; talking to us directly. If you haven&amp;rsquo;t already, the&#xA;&lt;a href=&#34;../quickstart/&#34;&gt;quickstart&lt;/a&gt; walks through your first send end to end; this page is the full&#xA;reference.&lt;/p&gt;&#xA;&lt;p&gt;One URL convention holds across every endpoint: the dataset or snapshot name is a &lt;strong&gt;path&#xA;segment&lt;/strong&gt;, never a query parameter — ZFS names already contain &lt;code&gt;/&lt;/code&gt;, so query-encoding one&#xA;would just add friction. A request to a real path with the wrong HTTP method gets an&#xA;automatic &lt;code&gt;405&lt;/code&gt; with an &lt;code&gt;Allow&lt;/code&gt; header, before anything else runs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About Us</title>
      <link>https://www.zfsrecv.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.zfsrecv.com/about/</guid>
      <description>&lt;p&gt;ZFSRecv is a Canadian federal corporation, with sites hosted in the US, Canada, and the EU.&#xA;We built ZFSRecv because it is the service we wanted to use didn&amp;rsquo;t exist: a safe way to&#xA;replicate data offsite, and get it back, without being locked into anyone&amp;rsquo;s ecosystem&#xA;of proprietary tools or libraries.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-we-built-this&#34;&gt;Why we built this&lt;/h2&gt;&#xA;&lt;p&gt;We wanted an offsite copy of our own data we could actually trust, not just &amp;ldquo;it&amp;rsquo;s somewhere&#xA;else,&amp;rdquo; but testably, restorably there, in a format we could walk away from without a&#xA;migration project. Everything we found asked us to install an agent, adopt an SDK, or trust a&#xA;proprietary snapshot format we&amp;rsquo;d only ever be able to read with their tools. We wanted something&#xA;that would inject unmodified ZFS replication streams, and support ZFS native encryption.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Choose a new password</title>
      <link>https://www.zfsrecv.com/reset/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.zfsrecv.com/reset/</guid>
      <description></description>
    </item>
    <item>
      <title>Reset your password</title>
      <link>https://www.zfsrecv.com/forgot/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.zfsrecv.com/forgot/</guid>
      <description></description>
    </item>
    <item>
      <title>Sign in</title>
      <link>https://www.zfsrecv.com/login/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.zfsrecv.com/login/</guid>
      <description></description>
    </item>
    <item>
      <title>Start replicating</title>
      <link>https://www.zfsrecv.com/signup/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.zfsrecv.com/signup/</guid>
      <description></description>
    </item>
    <item>
      <title>We&#39;ll be in touch</title>
      <link>https://www.zfsrecv.com/thanks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.zfsrecv.com/thanks/</guid>
      <description>&lt;p&gt;Thanks for reaching out about Fleet. Someone from our team will email you shortly to talk&#xA;through regions, hardware options, and pricing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Your account</title>
      <link>https://www.zfsrecv.com/account/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.zfsrecv.com/account/</guid>
      <description></description>
    </item>
  </channel>
</rss>
