Ok here we go....
For this demo I should show you what I'm intending to do.
Let's say my "W" pool is your ssd pool and D is your spinning rust pool. for my demo I'll snapshot "Shares" and replicate it to my D pool (note that there is no shares dataset on my D pool)
The first step to get things going is to create an periodic snapshot task. You can find this under the menu 'Tasks'
Click the add button and you will be greeted with a screen you have to fill in.
I've filled in my form as follows. I'll explain below.
1) Pool/Dataset is the source data. So in this example I selected W/Shares. This can be selected from the dropdown list.
2)Recursive is kind of self explanatory, but it makes a snapshot of datasets under the source pool/dataset. So in my case if I would choise my pool W as a the pool, and than select recursive a snapshot would be made of all the datasets under the pool W. Also if you later add a new dataset in this pool.
3) Snapshot lifetime is how long you want to keep the snapshot. This means that the snapshots that are created on the source pool will be kept fot this amount of time.
4) Interval is self explanatory. How often do you want to make a backup. However it's important that the first snapshot you define has a long interval. Long enough to copy all data to the new pool before the next snapshot will start. So I would propose to set this to a week for now and set the liftetime to a month. Once everything is set up and the first replication has competed you can add as many schedules you wish. (weekly dayly hourly, each with their own lifetime.)
Make sure you set begin, end and days of the week in such a way that a snapshot will be created in the near future. Otherwise you have to wait for a long time before the first snapshot is made, and thus before the first replication will hapen in the next steps
5) days of week... at what days do you want to make snapshot..... standard is weekdays so you might want to add saturday and sunday.
6) enabled is chedked as default. I would propose to keep it that way :P
click save.
Now go to Tasks\replication tasks.
and select add
Fill in the form like this:
Pool dataset will be the pool you made the periodic snapshot task for. If you did not do this, you can not select the pool/dataset from the dropdown list.
Remote ZFS Pool/Dataset is the pool you want to send the data to. It says remote because you can send it to another host or server. In your case the host will just be "localhost" so select the location you want the replicated data to be send to (your spinning rust pool).
Check all check marks.
You don't need to change begin time or end time. As soon as a snapshot is made it will start to replicate. So you have full controll over when you want the replication to start and end by just scheduling your snapshots.
click scan ssh key (this will copy the ssh key of "localhost" to the proper location so the system trusts itself :))
Click save and you are done...
That's it!!!
It's a long description but honestly now you know where the buttons are you probaby can do it in 2 minutes flat.
now give your system time to make a snapshot (depends on your schedule) and to replicate (depends on how big your dataset is)
after this you can go back to storage\pools and you will see the dataset moved to your spinning rust pool as you can see here under.
Now you can add as many periodic snapshot tasks for your ssd pool as you want with the lifetimes you want to have and your spinning rust pool will stay up to date with your snapshots.'
Since zfs knows what blocks have changed since the last snapshot this method is "snappy" and only the changes are send over. Also because you will have many snapshots you can go back to any point in time for which you have a snapshot. This is very usefull if you deleted that one file that you want to restore. Just mount the snapshot, copy the file over to your live dataset and unmount the snapshot.
If you want to have an explination about how to do that, please let me know. I'll do another writeup like this.
I hope this helps!!!