I currently have two computers, one that has a big zfs raidz pool that I currently back everything up to. Right now, on my local computer I use rsnapshot to do snapshot backups via rsync to the remote zfs pool. I know I’m wasting a ton of space because I have snapshotting in the rsync backup, and then the zfs pool is snapshotted every day.

Does it make sense to just do a regular rsync into a backup directory on the zfs pool and then just rely on the zfs pool snapshotting for snapshotting?

Maybe eventually I will put the local machine on zfs and then just send the local zfs snapshots over, but that will take some time. Thanks!

  • Avid Amoeba
    link
    fedilink
    English
    arrow-up
    7
    ·
    edit-2
    11 months ago

    Using plain rsync sounds sane.

    Sending local ZFS snapshots to the remote ZFS might be problematic. Consider accidentally deleting important data locally and nuking all of your local snapshots, then sending that to the remote ZFS. You lost all of your snapshots and there’s no way to recover the deleted data. Instead do what I do - keep the two ZFS systems separate and use a non-ZFS mechanism to transfer data - rsync, Syncthing, etc. That way even if you delete everything locally, nuke all local snapshots and send the deletions via rsync remotely, you could still recover your data by restoring the remote ZFS to a snapshot prior to the deletions. For reference I have two ZFS machines doing frequent snapshots and Syncthing replicating data between them on immediate basis.

    !selfhosted, please do critique if you find some fundamental issues with this.

    • BCsven
      link
      fedilink
      English
      arrow-up
      3
      ·
      11 months ago

      Zfs send / receive might be what you want

      • Avid Amoeba
        link
        fedilink
        English
        arrow-up
        2
        ·
        11 months ago

        Wouldn’t send/receive also sync snapshots across ZFS instances?

        • BCsven
          link
          fedilink
          English
          arrow-up
          1
          ·
          11 months ago

          Docs say this , so yeah. "send streams can either be “full”, containing all data in a given snapshot, or “incremental”, containing only the differences between two snapshots. ZFS receive reads these send streams and uses them to re-create identical snapshots on a receiving system. "

          • Avid Amoeba
            link
            fedilink
            English
            arrow-up
            1
            ·
            edit-2
            11 months ago

            Hm, so send doesn’t “create the same state, bits and snapshots” on the other side. Instead it “adds net new snapshots” on the other side. 🤔

            Perhaps I could use send instead of Syncthing after all. But then again I’m typically syncing net new data so the optimization would be minimal.

            • BCsven
              link
              fedilink
              English
              arrow-up
              1
              ·
              11 months ago

              I believe there is a method to do a 1-1 build copy, but my expertise ends at this point

    • abies_exarchia@lemm.eeOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      11 months ago

      This is fantastically helpful, thank you. I will do this.

      I don’t know why I thought sending zfs snapshots was the better option

      • Avid Amoeba
        link
        fedilink
        English
        arrow-up
        2
        ·
        edit-2
        11 months ago

        Cause it makes sense at a glance and it’s efficient. Not for backup purposes though.