IkerSaint / ZFS-Master-Unraid

Home for the ZFS-Master Unraid Plugin
16 stars 4 forks source link

Feature request: Implement send/receive snapshots #16

Open maximberezin97 opened 1 month ago

maximberezin97 commented 1 month ago

Sending dataset snapshots to remote systems is a very useful ZFS feature that still has no GUI support in Unraid.

ZFS Master is the de-facto standard Unraid ZFS GUI, and it would be immensely useful in backup planning and restoring, to be able to send and receive snapshots to secondary/remote storage.

There already exists a TODO placeholder for the send and recv functions. It would be great to see these implemented!

Sanoid, a mature and configurable snapshot management tool, is already available as an Unraid plugin, however it has no GUI support, leading to a disjointed ZFS experience on Unraid. Ideally, ZFS Master would be able to integrate with, or even itself configure Sanoid through a GUI.

SpaceInvaderOne has a custom User Script implementing zfs send that depends on Sanoid, and even recommends this plugin. However, in its current design, the script assumes that the user only wants to send one pool at a time, only recently merging a PR to support sending all datasets under a pool in one script. If a user has multiple pools, they need multiple instances of the script. It becomes even more complicated if the user wants to send some but not all datasets in a given pool.

I suppose one of the challenges involved is that this would be a long-running command call, and the end user may expect that they could start this command, close the session in which it was invoked, and that the command would continue running externally. It would also be nice to have a progress bar visible somewhere, but the polling may not be so simple.

Though I would be eager to help in this feature's development. I do not have experience with PHP.

Simply for reference, zfs send documentation, zfs recv documentation.

IkerSaint commented 1 month ago

Hi Maxim, indeed, there are some placeholders because the idea is to implement this functionality in upcoming versions, more specifically between November and December; I haven't decided yet which underlying solution it's going to be used, but very likely it will be pure zfs for sending the datasets and ZnapZend schedule management.