{
  "created": "2024-01-23T02:29:27Z",
  "hierarchy": [
    {
      "name": "ROOT",
      "type": "folder",
      "uri": "/ROOT"
    },
    {
      "name": "ZFS Notes",
      "type": "article",
      "uri": "ZFS_Notes"
    }
  ],
  "html": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\"/>\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"/>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>\n    <meta property=\"og:image\" content=\"/img/logo512.png\"/>\n    <meta property=\"og:site_name\" content=\"Nikhil's Personal Wiki\"/>\n    <link rel=\"og:image\" href=\"/img/logo512.png\"/>\n    <link rel=\"icon\" href=\"/img/favicon.png\"/>\n    <link rel=\"apple-touch-icon\" href=\"/img/logo192.png\"/>\n    <link rel=\"stylesheet\" href=\"/css/styles.css\"/>\n    <link rel=\"stylesheet\" href=\"/css/highlight.css\"/>\n    <title>ZFS Notes &ndash; Nikhil's Personal Wiki</title>\n    <script type=\"text/javascript\" id=\"MathJax-script\" defer src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js\"></script>\n    <script defer data-domain=\"wiki.nikhil.io\" src=\"https://plausible.io/js/plausible.js\"></script>\n  </head>\n  <body>\n    <noscript>\n      👉 A few things won&#8217;t work if you have JavaScript disabled.\n    </noscript>\n    <div class=\"container article\">\n      <header>\n        <nav>\n          <ul>\n            <li>\n              <a href=\"/archive\"  title=\"Archive\">\n                <span>Archive</span>\n              </a>\n            </li>\n            <li>\n              <a href=\"/Home\"  title=\"Home\">\n                <span>Home</span>\n              </a>\n            </li>\n            <li>\n              <a href=\"/random\"  title=\"See a random article\">\n                <span>Random</span>\n              </a>\n            </li>\n            \n            \n              \n                <li>\n                  <a href=\"/ZFS_Notes/raw\"  title=\"View Source\">\n                    <span>Raw</span>\n                  </a>\n                </li>\n              \n              \n            \n            \n            \n            \n              \n                <li>\n                  <a href=\"/ZFS_Notes/revisions\" >\n                    <span>Revisions</span>\n                  </a>\n                </li>\n              \n            \n            \n              \n                \n                  <li>\n                    <a href=\"/ZFS_Notes/index.json\" title=\"View JSON Object\">\n                      <span>JSON</span>\n                    </a>\n                  </li>\n                \n              \n            \n          </ul>\n        </nav>\n      </header>\n      <main>\n        \n  <nav>\n  <ul>\n    \n      <li>\n        <a data-entity-type=\"folder\" href=\"/ROOT\" title=\"ROOT\">Root</a>\n      </li>\n    \n      <li>\n        <a data-entity-type=\"article\" href=\"/ZFS_Notes\" title=\"ZFS Notes\">ZFS Notes</a>\n      </li>\n    \n    \n    \n    \n    \n  </ul>\n</nav>\n\n  <h1>ZFS Notes\n    \n  </h1>\n  <h2>Some Commonly Used Commands</h2>\n<pre tabindex=\"0\" class=\"chroma\"><code><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># View snapshots for a particular pool</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs list -t snapshot -r mypool\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># View snapshot names only for a given pool (silences the header too)</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs list -r -t snapshot -o name -H mypool\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Rename a snapshot</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs rename mypool/dataset_foo mypool/dataset_bar\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># View the space used by snapshots and the pool</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs get used,usedds,usedbysnapshots,usedrefreserv orangepool/media\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Look for zpools</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs import\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Import a zpool named &#39;tank&#39;</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs import tank -f\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># To see where things are mounted. In Ubuntu&#39;s case, it will be at /tank</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs get mountpoint\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># See the list of upgrades to the zpools</span>\n</span></span><span class=\"line\"><span class=\"cl\">zpool upgrade\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Perform the upgrades to ALL zpools (YOU NEED TO KNOW WHAT THIS MEANS AND WHAT</span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># YOU&#39;RE DOING HERE.)</span>\n</span></span><span class=\"line\"><span class=\"cl\">sudo zpool upgrade -a\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># See when a snapshot is created. You can get other properties this way as well.</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs get creation -t snapshot tank/dataset\n</span></span></code></pre><h2>Backups</h2>\n<p>Backup all datasets and snapshots in a Zpool to an external USB drive. <a href=\"https://www.ixsystems.com/community/threads/manually-on-demand-replicating-entire-main-pool-to-external-usb-drive-for-physical-offsite-emergency.79804/\">This person</a> has basically the same approach except that they&rsquo;re doing it via manual <code>cron</code> job.</p>\n<p><em>Run all this stuff as <code>root</code></em>! Get weird errors with zfs not being able to unmount before receiving snapshots :/</p>\n<pre tabindex=\"0\" class=\"chroma\"><code><span class=\"line\"><span class=\"cl\"><span class=\"cp\">#!/usr/local/bin/bash\n</span></span></span><span class=\"line\"><span class=\"cl\"><span class=\"cp\"></span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"nb\">export</span> <span class=\"nv\">SOURCE_POOL</span><span class=\"o\">=</span><span class=\"s2\">&#34;source&#34;</span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"nb\">export</span> <span class=\"nv\">DESTINATION_POOL</span><span class=\"o\">=</span><span class=\"s2\">&#34;backup&#34;</span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"nb\">export</span> <span class=\"nv\">SNAPSHOT_LABEL</span><span class=\"o\">=</span><span class=\"s2\">&#34;manual_monthly_backup&#34;</span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"nb\">export</span> <span class=\"nv\">SNAPSHOT_LABEL_PREV</span><span class=\"o\">=</span><span class=\"s2\">&#34;</span><span class=\"si\">${</span><span class=\"nv\">SNAPSHOT_LABEL</span><span class=\"si\">}</span><span class=\"s2\">_previous&#34;</span>\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># --- Initial Backup ---</span>\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># First, take a snapshot of the pool to back up</span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># I have underlying underlying datasets, so make this recursive</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs snapshot -r <span class=\"s2\">&#34;</span><span class=\"nv\">$SOURCE_POOL</span><span class=\"s2\">@</span><span class=\"nv\">$SNAPSHOT_LABEL</span><span class=\"s2\">&#34;</span>\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Initial transfer. `pv` shows progress nicely. We</span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># are backing up all datasets and their snapshots.</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs send -R <span class=\"s2\">&#34;</span><span class=\"nv\">$SOURCE_POOL</span><span class=\"s2\">@</span><span class=\"nv\">$SNAPSHOT_LABEL</span><span class=\"s2\">&#34;</span> <span class=\"p\">|</span> pv <span class=\"p\">|</span> zfs receive -vF <span class=\"nv\">$DESTINATION_POOL</span>\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># --- All subsequent backups ---</span>\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Incremental backups! First, rename the old</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs rename -r <span class=\"nv\">$SOURCE_POOL</span>@<span class=\"nv\">$SNAPSHOT_LABEL</span> <span class=\"nv\">$SOURCE_POOL</span>@<span class=\"nv\">$SNAPSHOT_LABEL_PREV</span>\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Take a fresh new snapshot</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs snapshot -r <span class=\"nv\">$SOURCE_POOL</span>@<span class=\"nv\">$SNAPSHOT_LABEL</span>\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Send incrementals to the destination. The `-i` flag</span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># will send the difference between the two arguments to</span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># the destination.</span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\">#</span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># If all intermediary snapshots are required, use &#39;-I&#39;</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs send -R -i <span class=\"nv\">$SOURCE_POOL</span>@<span class=\"nv\">$SNAPSHOT_LABEL_PREV</span> <span class=\"nv\">$SOURCE_POOL</span>@<span class=\"nv\">$SNAPSHOT_LABEL</span> <span class=\"p\">|</span> pv <span class=\"p\">|</span> zfs receive -vF <span class=\"nv\">$DESTINATION_POOL</span>\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Don&#39;t need the previous snapshots anymore... clean up</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs destroy -r <span class=\"nv\">$SOURCE_POOL</span>@<span class=\"nv\">$SNAPSHOT_LABEL_PREV</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs destroy -r <span class=\"nv\">$DESTINATION_POOL</span>@<span class=\"nv\">$SNAPSHOT_LABEL_PREV</span>\n</span></span></code></pre><h3><code>cron</code> Job</h3>\n<p>From that forum post up top:</p>\n<pre tabindex=\"0\" class=\"chroma\"><code><span class=\"line\"><span class=\"cl\"><span class=\"o\">(</span>\n</span></span><span class=\"line\"><span class=\"cl\">    zfs rename -r mainpool@offsite-backup-new mainpool@offsite-backup-old<span class=\"p\">;</span>\n</span></span><span class=\"line\"><span class=\"cl\">    zfs snapshot -r mainpool@offsite-backup-new<span class=\"p\">;</span>\n</span></span><span class=\"line\"><span class=\"cl\">    zfs send -Ri mainpool@offsite-backup-old mainpool@offsite-backup-new <span class=\"p\">|</span> zfs recv -vFdu usbdrivepool<span class=\"p\">;</span>\n</span></span><span class=\"line\"><span class=\"cl\">    zfs destroy -r mainpool@offsite-backup-old<span class=\"p\">;</span>\n</span></span><span class=\"line\"><span class=\"cl\">    zfs destroy -r usbdrivepool@offsite-backup-old<span class=\"p\">;</span>\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"o\">)</span> <span class=\"p\">|</span> mail -s <span class=\"s2\">&#34;FreeNAS Replication to USB Drive&#34;</span> <span class=\"s2\">&#34;myemail@example.com&#34;</span>\n</span></span></code></pre><h3>Other Notes</h3>\n<p>I ended up just making a small script that uses <code>rsync</code> and snapshots. Sample:</p>\n<pre tabindex=\"0\" class=\"chroma\"><code><span class=\"line\"><span class=\"cl\"><span class=\"nv\">TIMESTAMP</span><span class=\"o\">=</span><span class=\"k\">$(</span>date <span class=\"s2\">&#34;+%Y-%m-%dT%H.%M.%S&#34;</span><span class=\"k\">)</span>\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\">zfs snapshot <span class=\"s2\">&#34;backup/miscellaneous@</span><span class=\"nv\">$TIMESTAMP</span><span class=\"s2\">&#34;</span>\n</span></span><span class=\"line\"><span class=\"cl\">rsync -avWHh --progress --stats /mnt/orangepool/miscellaneous/ /mnt/backup/miscellaneous/\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\">zfs snapshot <span class=\"s2\">&#34;backup/media@</span><span class=\"nv\">$TIMESTAMP</span><span class=\"s2\">&#34;</span>\n</span></span><span class=\"line\"><span class=\"cl\">rsync -avWHh --progress --stats /mnt/orangepool/media/ /mnt/backup/media/\n</span></span></code></pre><p>Other useful commands:</p>\n<pre tabindex=\"0\" class=\"chroma\"><code><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># View snapshots for a particular pool</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs list -t snapshot -r mypool\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># View snapshot names only for a given pool (silences the header too)</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs list -r -t snapshot -o name -H backup\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Rename a snapshot</span>\n</span></span><span class=\"line\"><span class=\"cl\">zfs rename mypool/dataset_foo mypool/dataset_bar\n</span></span></code></pre><p>Importing and renaming pools:</p>\n<pre tabindex=\"0\" class=\"chroma\"><code><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># View importable pools</span>\n</span></span><span class=\"line\"><span class=\"cl\">zpool import\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Import a pool</span>\n</span></span><span class=\"line\"><span class=\"cl\">zpool import my-pool\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># If you messed up a pool&#39;s name, export it...</span>\n</span></span><span class=\"line\"><span class=\"cl\">zpool <span class=\"nb\">export</span> my-polo\n</span></span><span class=\"line\"><span class=\"cl\">\n</span></span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># ... and import it with the correct name</span>\n</span></span><span class=\"line\"><span class=\"cl\">zpool import my-polo my-pool\n</span></span></code></pre>\n\n      </main>\n      <footer>\n        <p>\n          \n        </p>\n        <ul>\n          \n  <li>4,021 bytes</li>\n  \n    <li>Created on Tuesday, 23 January 2024 at 02:29 UTC</li>\n    <li>Modified on Tuesday, 13 January 2026 at 18:47 UTC</li>\n    <br/>\n    <li>\n      <a\n        href=\"https://github.com/afreeorange/wiki.nikhil.io.articles/edit/master/ZFS Notes.md\"\n        title=\"Edit this article\">Edit this article</a>\n    </li>\n  \n\n          <li>\n            <a href=\"https://github.com/afreeorange/bock\" title=\"View the project that generates this wiki on Github\">bock\n            5.2.0-beta</a>\n          </li>\n        </ul>\n      </footer>\n    </div>\n    \n    \n      <script type=\"text/javascript\">\n        /**\n         * Quick shortcut to take me to the search box which is 90% of how I navigate\n         * this wiki anyway.\n         */\n        document.body.addEventListener(\n          \"keypress\", (e) => e.key === \"f\"\n          ? window.location.assign(\"/archive\")\n          : null);\n        window.MathJax = {\n          tex: {\n            inlineMath: [\n              [\n                '$', '$'\n              ],\n              [\n                '\\\\(', '\\\\)'\n              ]\n            ]\n          },\n          svg: {\n            fontCache: 'global'\n          }\n        };\n      </script>\n    \n  </body>\n</html></head></html>\n",
  "id": "eaab0a91-5a5a-50bc-8c10-81a89f1fb640",
  "modified": "2026-01-13T18:47:28Z",
  "revisions": [
    {
      "authorEmail": "mail@nikhil.io",
      "authorName": "Nikhil Anand",
      "date": "2026-01-13T18:47:28Z",
      "id": "2436477560f26e23d00a24add1cbfeafdca4af78",
      "shortId": "24364775",
      "subject": "No compression\n",
      "content": "## Some Commonly Used Commands\n\n```shell\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H mypool\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n\n# View the space used by snapshots and the pool\nzfs get used,usedds,usedbysnapshots,usedrefreserv orangepool/media\n\n# Look for zpools\nzfs import\n\n# Import a zpool named 'tank'\nzfs import tank -f\n\n# To see where things are mounted. In Ubuntu's case, it will be at /tank\nzfs get mountpoint\n\n# See the list of upgrades to the zpools\nzpool upgrade\n\n# Perform the upgrades to ALL zpools (YOU NEED TO KNOW WHAT THIS MEANS AND WHAT\n# YOU'RE DOING HERE.)\nsudo zpool upgrade -a\n\n# See when a snapshot is created. You can get other properties this way as well.\nzfs get creation -t snapshot tank/dataset\n```\n\n## Backups\n\nBackup all datasets and snapshots in a Zpool to an external USB drive. [This person](https://www.ixsystems.com/community/threads/manually-on-demand-replicating-entire-main-pool-to-external-usb-drive-for-physical-offsite-emergency.79804/) has basically the same approach except that they're doing it via manual `cron` job.\n\n_Run all this stuff as `root`_! Get weird errors with zfs not being able to unmount before receiving snapshots :/\n\n```bash\n#!/usr/local/bin/bash\n\nexport SOURCE_POOL=\"source\"\nexport DESTINATION_POOL=\"backup\"\nexport SNAPSHOT_LABEL=\"manual_monthly_backup\"\nexport SNAPSHOT_LABEL_PREV=\"${SNAPSHOT_LABEL}_previous\"\n\n# --- Initial Backup ---\n\n# First, take a snapshot of the pool to back up\n# I have underlying underlying datasets, so make this recursive\nzfs snapshot -r \"$SOURCE_POOL@$SNAPSHOT_LABEL\"\n\n# Initial transfer. `pv` shows progress nicely. We\n# are backing up all datasets and their snapshots.\nzfs send -R \"$SOURCE_POOL@$SNAPSHOT_LABEL\" | pv | zfs receive -vF $DESTINATION_POOL\n\n# --- All subsequent backups ---\n\n# Incremental backups! First, rename the old\nzfs rename -r $SOURCE_POOL@$SNAPSHOT_LABEL $SOURCE_POOL@$SNAPSHOT_LABEL_PREV\n\n# Take a fresh new snapshot\nzfs snapshot -r $SOURCE_POOL@$SNAPSHOT_LABEL\n\n# Send incrementals to the destination. The `-i` flag\n# will send the difference between the two arguments to\n# the destination.\n#\n# If all intermediary snapshots are required, use '-I'\nzfs send -R -i $SOURCE_POOL@$SNAPSHOT_LABEL_PREV $SOURCE_POOL@$SNAPSHOT_LABEL | pv | zfs receive -vF $DESTINATION_POOL\n\n# Don't need the previous snapshots anymore... clean up\nzfs destroy -r $SOURCE_POOL@$SNAPSHOT_LABEL_PREV\nzfs destroy -r $DESTINATION_POOL@$SNAPSHOT_LABEL_PREV\n```\n\n### `cron` Job\n\nFrom that forum post up top:\n\n```bash\n(\n    zfs rename -r mainpool@offsite-backup-new mainpool@offsite-backup-old;\n    zfs snapshot -r mainpool@offsite-backup-new;\n    zfs send -Ri mainpool@offsite-backup-old mainpool@offsite-backup-new | zfs recv -vFdu usbdrivepool;\n    zfs destroy -r mainpool@offsite-backup-old;\n    zfs destroy -r usbdrivepool@offsite-backup-old;\n) | mail -s \"FreeNAS Replication to USB Drive\" \"myemail@example.com\"\n```\n\n### Other Notes\n\nI ended up just making a small script that uses `rsync` and snapshots. Sample:\n\n```bash\nTIMESTAMP=$(date \"+%Y-%m-%dT%H.%M.%S\")\n\nzfs snapshot \"backup/miscellaneous@$TIMESTAMP\"\nrsync -avWHh --progress --stats /mnt/orangepool/miscellaneous/ /mnt/backup/miscellaneous/\n\nzfs snapshot \"backup/media@$TIMESTAMP\"\nrsync -avWHh --progress --stats /mnt/orangepool/media/ /mnt/backup/media/\n```\n\nOther useful commands:\n\n```bash\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H backup\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n```\n\nImporting and renaming pools:\n\n```bash\n# View importable pools\nzpool import\n\n# Import a pool\nzpool import my-pool\n\n# If you messed up a pool's name, export it...\nzpool export my-polo\n\n# ... and import it with the correct name\nzpool import my-polo my-pool\n```\n\n"
    },
    {
      "authorEmail": "mail@nikhil.io",
      "authorName": "Nikhil Anand",
      "date": "2025-07-04T17:34:30Z",
      "id": "139c56faf338c711cd73868b79ba2312482709d3",
      "shortId": "139c56fa",
      "subject": "Notes on snapshot usage\n",
      "content": "## Some Commonly Used Commands\n\n```shell\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H mypool\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n\n# View the space used by snapshots and the pool\nzfs get used,usedds,usedbysnapshots,usedrefreserv orangepool/media\n\n# Look for zpools\nzfs import\n\n# Import a zpool named 'tank'\nzfs import tank -f\n\n# To see where things are mounted. In Ubuntu's case, it will be at /tank\nzfs get mountpoint\n\n# See the list of upgrades to the zpools\nzpool upgrade\n\n# Perform the upgrades to ALL zpools (YOU NEED TO KNOW WHAT THIS MEANS AND WHAT\n# YOU'RE DOING HERE.)\nsudo zpool upgrade -a\n\n# See when a snapshot is created. You can get other properties this way as well.\nzfs get creation -t snapshot tank/dataset\n```\n\n## Backups\n\nBackup all datasets and snapshots in a Zpool to an external USB drive. [This person](https://www.ixsystems.com/community/threads/manually-on-demand-replicating-entire-main-pool-to-external-usb-drive-for-physical-offsite-emergency.79804/) has basically the same approach except that they're doing it via manual `cron` job.\n\n_Run all this stuff as `root`_! Get weird errors with zfs not being able to unmount before receiving snapshots :/\n\n```bash\n#!/usr/local/bin/bash\n\nexport SOURCE_POOL=\"source\"\nexport DESTINATION_POOL=\"backup\"\nexport SNAPSHOT_LABEL=\"manual_monthly_backup\"\nexport SNAPSHOT_LABEL_PREV=\"${SNAPSHOT_LABEL}_previous\"\n\n# --- Initial Backup ---\n\n# First, take a snapshot of the pool to back up\n# I have underlying underlying datasets, so make this recursive\nzfs snapshot -r \"$SOURCE_POOL@$SNAPSHOT_LABEL\"\n\n# Initial transfer. `pv` shows progress nicely. We\n# are backing up all datasets and their snapshots.\nzfs send -R \"$SOURCE_POOL@$SNAPSHOT_LABEL\" | pv | zfs receive -vF $DESTINATION_POOL\n\n# --- All subsequent backups ---\n\n# Incremental backups! First, rename the old\nzfs rename -r $SOURCE_POOL@$SNAPSHOT_LABEL $SOURCE_POOL@$SNAPSHOT_LABEL_PREV\n\n# Take a fresh new snapshot\nzfs snapshot -r $SOURCE_POOL@$SNAPSHOT_LABEL\n\n# Send incrementals to the destination. The `-i` flag\n# will send the difference between the two arguments to\n# the destination.\n#\n# If all intermediary snapshots are required, use '-I'\nzfs send -R -i $SOURCE_POOL@$SNAPSHOT_LABEL_PREV $SOURCE_POOL@$SNAPSHOT_LABEL | pv | zfs receive -vF $DESTINATION_POOL\n\n# Don't need the previous snapshots anymore... clean up\nzfs destroy -r $SOURCE_POOL@$SNAPSHOT_LABEL_PREV\nzfs destroy -r $DESTINATION_POOL@$SNAPSHOT_LABEL_PREV\n```\n\n### `cron` Job\n\nFrom that forum post up top:\n\n```bash\n(\n    zfs rename -r mainpool@offsite-backup-new mainpool@offsite-backup-old;\n    zfs snapshot -r mainpool@offsite-backup-new;\n    zfs send -Ri mainpool@offsite-backup-old mainpool@offsite-backup-new | zfs recv -vFdu usbdrivepool;\n    zfs destroy -r mainpool@offsite-backup-old;\n    zfs destroy -r usbdrivepool@offsite-backup-old;\n) | mail -s \"FreeNAS Replication to USB Drive\" \"myemail@example.com\"\n```\n\n### Other Notes\n\nI ended up just making a small script that uses `rsync` and snapshots. Sample:\n\n```bash\nTIMESTAMP=$(date \"+%Y-%m-%dT%H.%M.%S\")\n\nzfs snapshot \"backup/miscellaneous@$TIMESTAMP\"\nrsync -avWHh --progress --stats /mnt/orangepool/miscellaneous/ /mnt/backup/miscellaneous/\n\nzfs snapshot \"backup/media@$TIMESTAMP\"\nrsync -avWHh --progress --stats /mnt/orangepool/media/ /mnt/backup/media/\n```\n\nOther useful commands:\n\n```bash\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H backup\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n```\n\nImporting and renaming pools:\n\n```bash\n# View importable pools\nzpool import\n\n# Import a pool\nzpool import my-pool\n\n# If you messed up a pool's name, export it...\nzpool export my-polo\n\n# ... and import it with the correct name\nzpool import my-polo my-pool\n```\n\n"
    },
    {
      "authorEmail": "mail@nikhil.io",
      "authorName": "Nikhil Anand",
      "date": "2025-06-06T14:38:23Z",
      "id": "c94a7e7ca1fce8cd9c634d81b8b5711166546c9c",
      "shortId": "c94a7e7c",
      "subject": "Merge branch 'master' of github.com:afreeorange/wiki.nikhil.io.articles\n",
      "content": "## Some Commonly Used Commands\n\n```shell\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H mypool\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n\n# Look for zpools\nzfs import\n\n# Import a zpool named 'tank'\nzfs import tank -f\n\n# To see where things are mounted. In Ubuntu's case, it will be at /tank\nzfs get mountpoint\n\n# See the list of upgrades to the zpools\nzpool upgrade\n\n# Perform the upgrades to ALL zpools (YOU NEED TO KNOW WHAT THIS MEANS AND WHAT\n# YOU'RE DOING HERE.)\nsudo zpool upgrade -a\n\n# See when a snapshot is created. You can get other properties this way as well.\nzfs get creation -t snapshot tank/dataset\n```\n\n## Backups\n\nBackup all datasets and snapshots in a Zpool to an external USB drive. [This person](https://www.ixsystems.com/community/threads/manually-on-demand-replicating-entire-main-pool-to-external-usb-drive-for-physical-offsite-emergency.79804/) has basically the same approach except that they're doing it via manual `cron` job.\n\n_Run all this stuff as `root`_! Get weird errors with zfs not being able to unmount before receiving snapshots :/\n\n```bash\n#!/usr/local/bin/bash\n\nexport SOURCE_POOL=\"source\"\nexport DESTINATION_POOL=\"backup\"\nexport SNAPSHOT_LABEL=\"manual_monthly_backup\"\nexport SNAPSHOT_LABEL_PREV=\"${SNAPSHOT_LABEL}_previous\"\n\n# --- Initial Backup ---\n\n# First, take a snapshot of the pool to back up\n# I have underlying underlying datasets, so make this recursive\nzfs snapshot -r \"$SOURCE_POOL@$SNAPSHOT_LABEL\"\n\n# Initial transfer. `pv` shows progress nicely. We\n# are backing up all datasets and their snapshots.\nzfs send -R \"$SOURCE_POOL@$SNAPSHOT_LABEL\" | pv | zfs receive -vF $DESTINATION_POOL\n\n# --- All subsequent backups ---\n\n# Incremental backups! First, rename the old\nzfs rename -r $SOURCE_POOL@$SNAPSHOT_LABEL $SOURCE_POOL@$SNAPSHOT_LABEL_PREV\n\n# Take a fresh new snapshot\nzfs snapshot -r $SOURCE_POOL@$SNAPSHOT_LABEL\n\n# Send incrementals to the destination. The `-i` flag\n# will send the difference between the two arguments to\n# the destination.\n#\n# If all intermediary snapshots are required, use '-I'\nzfs send -R -i $SOURCE_POOL@$SNAPSHOT_LABEL_PREV $SOURCE_POOL@$SNAPSHOT_LABEL | pv | zfs receive -vF $DESTINATION_POOL\n\n# Don't need the previous snapshots anymore... clean up\nzfs destroy -r $SOURCE_POOL@$SNAPSHOT_LABEL_PREV\nzfs destroy -r $DESTINATION_POOL@$SNAPSHOT_LABEL_PREV\n```\n\n### `cron` Job\n\nFrom that forum post up top:\n\n```bash\n(\n    zfs rename -r mainpool@offsite-backup-new mainpool@offsite-backup-old;\n    zfs snapshot -r mainpool@offsite-backup-new;\n    zfs send -Ri mainpool@offsite-backup-old mainpool@offsite-backup-new | zfs recv -vFdu usbdrivepool;\n    zfs destroy -r mainpool@offsite-backup-old;\n    zfs destroy -r usbdrivepool@offsite-backup-old;\n) | mail -s \"FreeNAS Replication to USB Drive\" \"myemail@example.com\"\n```\n\n### Other Notes\n\nI ended up just making a small script that uses `rsync` and snapshots. Sample:\n\n```bash\nTIMESTAMP=$(date \"+%Y-%m-%dT%H.%M.%S\")\n\nzfs snapshot \"backup/miscellaneous@$TIMESTAMP\"\nrsync -avWHh --progress --stats /mnt/orangepool/miscellaneous/ /mnt/backup/miscellaneous/\n\nzfs snapshot \"backup/media@$TIMESTAMP\"\nrsync -avWHh --progress --stats /mnt/orangepool/media/ /mnt/backup/media/\n```\n\nOther useful commands:\n\n```bash\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H backup\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n```\n\nImporting and renaming pools:\n\n```bash\n# View importable pools\nzpool import\n\n# Import a pool\nzpool import my-pool\n\n# If you messed up a pool's name, export it...\nzpool export my-polo\n\n# ... and import it with the correct name\nzpool import my-polo my-pool\n```\n\n"
    },
    {
      "authorEmail": "mail@nikhil.io",
      "authorName": "Nikhil Anand",
      "date": "2025-06-03T19:29:56Z",
      "id": "bbbdc1dbf509041a5df4c4e1a84cfbb274f17fd1",
      "shortId": "bbbdc1db",
      "subject": "Some reorg on a fucking plane in a seat I am way too uncomfortable in.\n",
      "content": "## Some Commonly Used Commands\n\n```shell\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H mypool\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n\n# Look for zpools\nzfs import\n\n# Import a zpool named 'tank'\nzfs import tank -f\n\n# To see where things are mounted. In Ubuntu's case, it will be at /tank\nzfs get mountpoint\n\n# See the list of upgrades to the zpools\nzpool upgrade\n\n# Perform the upgrades to ALL zpools (YOU NEED TO KNOW WHAT THIS MEANS AND WHAT\n# YOU'RE DOING HERE.)\nsudo zpool upgrade -a\n\n# See when a snapshot is created. You can get other properties this way as well.\nzfs get creation -t snapshot tank/dataset\n```\n\n## Backups\n\nBackup all datasets and snapshots in a Zpool to an external USB drive. [This person](https://www.ixsystems.com/community/threads/manually-on-demand-replicating-entire-main-pool-to-external-usb-drive-for-physical-offsite-emergency.79804/) has basically the same approach except that they're doing it via manual `cron` job.\n\n_Run all this stuff as `root`_! Get weird errors with zfs not being able to unmount before receiving snapshots :/\n\n```bash\n#!/usr/local/bin/bash\n\nexport SOURCE_POOL=\"source\"\nexport DESTINATION_POOL=\"backup\"\nexport SNAPSHOT_LABEL=\"manual_monthly_backup\"\nexport SNAPSHOT_LABEL_PREV=\"${SNAPSHOT_LABEL}_previous\"\n\n# --- Initial Backup ---\n\n# First, take a snapshot of the pool to back up\n# I have underlying underlying datasets, so make this recursive\nzfs snapshot -r \"$SOURCE_POOL@$SNAPSHOT_LABEL\"\n\n# Initial transfer. `pv` shows progress nicely. We\n# are backing up all datasets and their snapshots.\nzfs send -R \"$SOURCE_POOL@$SNAPSHOT_LABEL\" | pv | zfs receive -vF $DESTINATION_POOL\n\n# --- All subsequent backups ---\n\n# Incremental backups! First, rename the old\nzfs rename -r $SOURCE_POOL@$SNAPSHOT_LABEL $SOURCE_POOL@$SNAPSHOT_LABEL_PREV\n\n# Take a fresh new snapshot\nzfs snapshot -r $SOURCE_POOL@$SNAPSHOT_LABEL\n\n# Send incrementals to the destination. The `-i` flag\n# will send the difference between the two arguments to\n# the destination.\n#\n# If all intermediary snapshots are required, use '-I'\nzfs send -R -i $SOURCE_POOL@$SNAPSHOT_LABEL_PREV $SOURCE_POOL@$SNAPSHOT_LABEL | pv | zfs receive -vF $DESTINATION_POOL\n\n# Don't need the previous snapshots anymore... clean up\nzfs destroy -r $SOURCE_POOL@$SNAPSHOT_LABEL_PREV\nzfs destroy -r $DESTINATION_POOL@$SNAPSHOT_LABEL_PREV\n```\n\n### `cron` Job\n\nFrom that forum post up top:\n\n```bash\n(\n    zfs rename -r mainpool@offsite-backup-new mainpool@offsite-backup-old;\n    zfs snapshot -r mainpool@offsite-backup-new;\n    zfs send -Ri mainpool@offsite-backup-old mainpool@offsite-backup-new | zfs recv -vFdu usbdrivepool;\n    zfs destroy -r mainpool@offsite-backup-old;\n    zfs destroy -r usbdrivepool@offsite-backup-old;\n) | mail -s \"FreeNAS Replication to USB Drive\" \"myemail@example.com\"\n```\n\n### Other Notes\n\nI ended up just making a small script that uses `rsync` and snapshots. Sample:\n\n```bash\nTIMESTAMP=$(date \"+%Y-%m-%dT%H.%M.%S\")\n\nzfs snapshot \"backup/miscellaneous@$TIMESTAMP\"\nrsync -avWHh --progress --stats /mnt/orangepool/miscellaneous/ /mnt/backup/miscellaneous/\n\nzfs snapshot \"backup/media@$TIMESTAMP\"\nrsync -avWHh --progress --stats /mnt/orangepool/media/ /mnt/backup/media/\n```\n\nOther useful commands:\n\n```bash\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H backup\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n```\n\nImporting and renaming pools:\n\n```bash\n# View importable pools\nzpool import\n\n# Import a pool\nzpool import my-pool\n\n# If you messed up a pool's name, export it...\nzpool export my-polo\n\n# ... and import it with the correct name\nzpool import my-polo my-pool\n```\n\n"
    },
    {
      "authorEmail": "mail@nikhil.io",
      "authorName": "Nikhil Anand",
      "date": "2025-05-25T00:47:10Z",
      "id": "d3dd8c0e645a14cae31dcbe73cb1c5bcea306c5d",
      "shortId": "d3dd8c0e",
      "subject": "Cleanup\n",
      "content": "```shell\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H mypool\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n\n# Look for zpools\nzfs import\n\n# Import a zpool named 'tank'\nzfs import tank -f\n\n# To see where things are mounted. In Ubuntu's case, it will be at /tank\nzfs get mountpoint\n\n# See the list of upgrades to the zpools\nzpool upgrade\n\n# Perform the upgrades to ALL zpools (YOU NEED TO KNOW WHAT THIS MEANS AND WHAT\n# YOU'RE DOING HERE.)\nsudo zpool upgrade -a\n\n# See when a snapshot is created. You can get other properties this way as well.\nzfs get creation -t snapshot tank/dataset\n```\n"
    },
    {
      "authorEmail": "mail@nikhil.io",
      "authorName": "Nikhil Anand",
      "date": "2024-04-15T23:21:58Z",
      "id": "4b2d73989d92e9602a635c4b492f41d43673e735",
      "shortId": "4b2d7398",
      "subject": "Merge branch 'master' of github.com:afreeorange/wiki.nikhil.io.articles\n",
      "content": "```shell\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H mypool\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n\n# Look for zpools\nzfs import\n\n# Import a zpool named 'tank'\nzfs import tank -f\n\n# To see where things are mounted. In Ubuntu's case, it will be at /tank\nzfs get mountpoint\n\n# See the list of upgrades to the zpools\nzpool upgrade\n\n# Perform the upgrades to ALL zpools (YOU NEED TO KNOW WHAT THIS MEANS AND WHAT\n# YOU'RE DOING HERE.)\nsudo zpool upgrade -a\n\n# See when a snapshot is created. You can get other properties this way as well.\nzfs get creation -t snapshot tank/dataset\n```\n"
    },
    {
      "authorEmail": "mail@nikhil.io",
      "authorName": "Nikhil Anand",
      "date": "2024-01-23T02:29:27Z",
      "id": "eb600021ebd2dec6eedf5fcf73e6c8ba5cbafa68",
      "shortId": "eb600021",
      "subject": "Initial commit\n",
      "content": "```shell\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H mypool\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n\n# Look for zpools\nzfs import\n\n# Import a zpool named 'tank'\nzfs import tank -f\n\n# To see where things are mounted. In Ubuntu's case, it will be at /tank\nzfs get mountpoint\n\n# See the list of upgrades to the zpools\nzpool upgrade\n\n# Perform the upgrades to ALL zpools (YOU NEED TO KNOW WHAT THIS MEANS AND WHAT\n# YOU'RE DOING HERE.)\nsudo zpool upgrade -a\n\n# See when a snapshot is created. You can get other properties this way as well.\nzfs get creation -t snapshot tank/dataset\n```\n"
    }
  ],
  "sizeInBytes": 4021,
  "source": "## Some Commonly Used Commands\n\n```shell\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H mypool\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n\n# View the space used by snapshots and the pool\nzfs get used,usedds,usedbysnapshots,usedrefreserv orangepool/media\n\n# Look for zpools\nzfs import\n\n# Import a zpool named 'tank'\nzfs import tank -f\n\n# To see where things are mounted. In Ubuntu's case, it will be at /tank\nzfs get mountpoint\n\n# See the list of upgrades to the zpools\nzpool upgrade\n\n# Perform the upgrades to ALL zpools (YOU NEED TO KNOW WHAT THIS MEANS AND WHAT\n# YOU'RE DOING HERE.)\nsudo zpool upgrade -a\n\n# See when a snapshot is created. You can get other properties this way as well.\nzfs get creation -t snapshot tank/dataset\n```\n\n## Backups\n\nBackup all datasets and snapshots in a Zpool to an external USB drive. [This person](https://www.ixsystems.com/community/threads/manually-on-demand-replicating-entire-main-pool-to-external-usb-drive-for-physical-offsite-emergency.79804/) has basically the same approach except that they're doing it via manual `cron` job.\n\n_Run all this stuff as `root`_! Get weird errors with zfs not being able to unmount before receiving snapshots :/\n\n```bash\n#!/usr/local/bin/bash\n\nexport SOURCE_POOL=\"source\"\nexport DESTINATION_POOL=\"backup\"\nexport SNAPSHOT_LABEL=\"manual_monthly_backup\"\nexport SNAPSHOT_LABEL_PREV=\"${SNAPSHOT_LABEL}_previous\"\n\n# --- Initial Backup ---\n\n# First, take a snapshot of the pool to back up\n# I have underlying underlying datasets, so make this recursive\nzfs snapshot -r \"$SOURCE_POOL@$SNAPSHOT_LABEL\"\n\n# Initial transfer. `pv` shows progress nicely. We\n# are backing up all datasets and their snapshots.\nzfs send -R \"$SOURCE_POOL@$SNAPSHOT_LABEL\" | pv | zfs receive -vF $DESTINATION_POOL\n\n# --- All subsequent backups ---\n\n# Incremental backups! First, rename the old\nzfs rename -r $SOURCE_POOL@$SNAPSHOT_LABEL $SOURCE_POOL@$SNAPSHOT_LABEL_PREV\n\n# Take a fresh new snapshot\nzfs snapshot -r $SOURCE_POOL@$SNAPSHOT_LABEL\n\n# Send incrementals to the destination. The `-i` flag\n# will send the difference between the two arguments to\n# the destination.\n#\n# If all intermediary snapshots are required, use '-I'\nzfs send -R -i $SOURCE_POOL@$SNAPSHOT_LABEL_PREV $SOURCE_POOL@$SNAPSHOT_LABEL | pv | zfs receive -vF $DESTINATION_POOL\n\n# Don't need the previous snapshots anymore... clean up\nzfs destroy -r $SOURCE_POOL@$SNAPSHOT_LABEL_PREV\nzfs destroy -r $DESTINATION_POOL@$SNAPSHOT_LABEL_PREV\n```\n\n### `cron` Job\n\nFrom that forum post up top:\n\n```bash\n(\n    zfs rename -r mainpool@offsite-backup-new mainpool@offsite-backup-old;\n    zfs snapshot -r mainpool@offsite-backup-new;\n    zfs send -Ri mainpool@offsite-backup-old mainpool@offsite-backup-new | zfs recv -vFdu usbdrivepool;\n    zfs destroy -r mainpool@offsite-backup-old;\n    zfs destroy -r usbdrivepool@offsite-backup-old;\n) | mail -s \"FreeNAS Replication to USB Drive\" \"myemail@example.com\"\n```\n\n### Other Notes\n\nI ended up just making a small script that uses `rsync` and snapshots. Sample:\n\n```bash\nTIMESTAMP=$(date \"+%Y-%m-%dT%H.%M.%S\")\n\nzfs snapshot \"backup/miscellaneous@$TIMESTAMP\"\nrsync -avWHh --progress --stats /mnt/orangepool/miscellaneous/ /mnt/backup/miscellaneous/\n\nzfs snapshot \"backup/media@$TIMESTAMP\"\nrsync -avWHh --progress --stats /mnt/orangepool/media/ /mnt/backup/media/\n```\n\nOther useful commands:\n\n```bash\n# View snapshots for a particular pool\nzfs list -t snapshot -r mypool\n\n# View snapshot names only for a given pool (silences the header too)\nzfs list -r -t snapshot -o name -H backup\n\n# Rename a snapshot\nzfs rename mypool/dataset_foo mypool/dataset_bar\n```\n\nImporting and renaming pools:\n\n```bash\n# View importable pools\nzpool import\n\n# Import a pool\nzpool import my-pool\n\n# If you messed up a pool's name, export it...\nzpool export my-polo\n\n# ... and import it with the correct name\nzpool import my-polo my-pool\n```\n\n",
  "title": "ZFS Notes",
  "untracked": false,
  "uri": "/ZFS_Notes",
  "relativePath": "ZFS Notes.md"
}
