Skip to main content
Updated sudo references to be consistent and root user correct.
Source Link

For example: (switch over to root user, i.e. $ sudo -s bash

$ sudo# zfs mount cypher-pool/data /data # mount dataset onto /data 
$ sudo# cd /data                              # Where the dataset is mounted.
$ sudo# cd .zfs                               # Note: system hidden directory
$ sudo# cd snapshot                           # Location of all dataset snapshots
$ sudo# ls                                    # List of current dataset snapshots
autosnap_2023-01-01_00:00:01_monthly
autosnap_2023-01-01_00:00:01_yearly
autosnap_2023-02-01_00:00:03_monthly
autosnap_2023-03-01_00:00:01_monthly
autosnap_2023-04-01_00:00:02_monthly
autosnap_2023-05-01_00:00:01_monthly
autosnap_2023-06-01_00:00:01_monthly
autosnap_2023-07-01_00:01:07_monthly
autosnap_2023-07-03_23:30:01_weekly
autosnap_2023-07-10_23:30:19_weekly
autosnap_2023-07-17_23:30:01_weekly
autosnap_2023-07-24_23:30:02_weekly
autosnap_2023-07-31_23:30:02_weekly
autosnap_2023-08-01_00:00:02_monthly
autosnap_2023-08-07_23:30:02_weekly
autosnap_2023-08-09_00:00:02_daily
autosnap_2023-08-10_00:00:04_daily
autosnap_2023-08-11_00:00:01_daily
autosnap_2023-08-12_00:00:03_daily
autosnap_2023-08-13_00:00:01_daily
autosnap_2023-08-14_00:00:01_daily
autosnap_2023-08-14_23:30:50_weekly
autosnap_2023-08-15_00:00:02_daily
autosnap_2023-08-15_07:00:02_hourly
autosnap_2023-08-15_08:00:02_hourly
autosnap_2023-08-15_09:00:02_hourly
autosnap_2023-08-15_10:00:01_hourly
$ sudo# cd autosnap_2023-04-01_00:00:02_monthly
$ sudo# ls 
(all my files in my dataset as of the snapshot on April 1st 2023)
$# zfs snapshot cypher-pool/data@backup_2023-08-21_16:20:42_backup
$# cd /data/.zfs/snapshot`
$# rsync -Pav autosnap_2023-04-01_00:00:02_monthly/* /data/

For example:

$ sudo zfs mount cypher-pool/data /data # mount dataset onto /data 
$ sudo cd /data                              # Where the dataset is mounted.
$ sudo cd .zfs                               # Note: system hidden directory
$ sudo cd snapshot                           # Location of all dataset snapshots
$ sudo ls                                    # List of current dataset snapshots
autosnap_2023-01-01_00:00:01_monthly
autosnap_2023-01-01_00:00:01_yearly
autosnap_2023-02-01_00:00:03_monthly
autosnap_2023-03-01_00:00:01_monthly
autosnap_2023-04-01_00:00:02_monthly
autosnap_2023-05-01_00:00:01_monthly
autosnap_2023-06-01_00:00:01_monthly
autosnap_2023-07-01_00:01:07_monthly
autosnap_2023-07-03_23:30:01_weekly
autosnap_2023-07-10_23:30:19_weekly
autosnap_2023-07-17_23:30:01_weekly
autosnap_2023-07-24_23:30:02_weekly
autosnap_2023-07-31_23:30:02_weekly
autosnap_2023-08-01_00:00:02_monthly
autosnap_2023-08-07_23:30:02_weekly
autosnap_2023-08-09_00:00:02_daily
autosnap_2023-08-10_00:00:04_daily
autosnap_2023-08-11_00:00:01_daily
autosnap_2023-08-12_00:00:03_daily
autosnap_2023-08-13_00:00:01_daily
autosnap_2023-08-14_00:00:01_daily
autosnap_2023-08-14_23:30:50_weekly
autosnap_2023-08-15_00:00:02_daily
autosnap_2023-08-15_07:00:02_hourly
autosnap_2023-08-15_08:00:02_hourly
autosnap_2023-08-15_09:00:02_hourly
autosnap_2023-08-15_10:00:01_hourly
$ sudo cd autosnap_2023-04-01_00:00:02_monthly
$ sudo ls 
(all my files in my dataset as of the snapshot on April 1st 2023)
$ zfs snapshot cypher-pool/data@backup_2023-08-21_16:20:42_backup
$ cd /data/.zfs/snapshot`
$ rsync -Pav autosnap_2023-04-01_00:00:02_monthly/* /data/

For example: (switch over to root user, i.e. $ sudo -s bash

# zfs mount cypher-pool/data /data # mount dataset onto /data 
# cd /data                              # Where the dataset is mounted.
# cd .zfs                               # Note: system hidden directory
# cd snapshot                           # Location of all dataset snapshots
# ls                                    # List of current dataset snapshots
autosnap_2023-01-01_00:00:01_monthly
autosnap_2023-01-01_00:00:01_yearly
autosnap_2023-02-01_00:00:03_monthly
autosnap_2023-03-01_00:00:01_monthly
autosnap_2023-04-01_00:00:02_monthly
autosnap_2023-05-01_00:00:01_monthly
autosnap_2023-06-01_00:00:01_monthly
autosnap_2023-07-01_00:01:07_monthly
autosnap_2023-07-03_23:30:01_weekly
autosnap_2023-07-10_23:30:19_weekly
autosnap_2023-07-17_23:30:01_weekly
autosnap_2023-07-24_23:30:02_weekly
autosnap_2023-07-31_23:30:02_weekly
autosnap_2023-08-01_00:00:02_monthly
autosnap_2023-08-07_23:30:02_weekly
autosnap_2023-08-09_00:00:02_daily
autosnap_2023-08-10_00:00:04_daily
autosnap_2023-08-11_00:00:01_daily
autosnap_2023-08-12_00:00:03_daily
autosnap_2023-08-13_00:00:01_daily
autosnap_2023-08-14_00:00:01_daily
autosnap_2023-08-14_23:30:50_weekly
autosnap_2023-08-15_00:00:02_daily
autosnap_2023-08-15_07:00:02_hourly
autosnap_2023-08-15_08:00:02_hourly
autosnap_2023-08-15_09:00:02_hourly
autosnap_2023-08-15_10:00:01_hourly
# cd autosnap_2023-04-01_00:00:02_monthly
# ls 
(all my files in my dataset as of the snapshot on April 1st 2023)
# zfs snapshot cypher-pool/data@backup_2023-08-21_16:20:42_backup
# cd /data/.zfs/snapshot`
# rsync -Pav autosnap_2023-04-01_00:00:02_monthly/* /data/
Source Link

My understanding of the design of zfs, rollback is intended for a immediate undo of all changes since the last snapshot. Since this is destructive, the safety measure is to only allow going back one snapshot. However, you could go back one, then go back one, etc... to get to your indented snapshot. How ever, realize you will loose all your dataset chances since that snapshot.

However, if the intention is to access files in the dataset back to a specific snapshot, you can actually just access it anytime without doing any zfs commands. Simply access the snapshot via your file system.

For example:

$ sudo zfs mount cypher-pool/data /data # mount dataset onto /data 
$ sudo cd /data                              # Where the dataset is mounted.
$ sudo cd .zfs                               # Note: system hidden directory
$ sudo cd snapshot                           # Location of all dataset snapshots
$ sudo ls                                    # List of current dataset snapshots
autosnap_2023-01-01_00:00:01_monthly
autosnap_2023-01-01_00:00:01_yearly
autosnap_2023-02-01_00:00:03_monthly
autosnap_2023-03-01_00:00:01_monthly
autosnap_2023-04-01_00:00:02_monthly
autosnap_2023-05-01_00:00:01_monthly
autosnap_2023-06-01_00:00:01_monthly
autosnap_2023-07-01_00:01:07_monthly
autosnap_2023-07-03_23:30:01_weekly
autosnap_2023-07-10_23:30:19_weekly
autosnap_2023-07-17_23:30:01_weekly
autosnap_2023-07-24_23:30:02_weekly
autosnap_2023-07-31_23:30:02_weekly
autosnap_2023-08-01_00:00:02_monthly
autosnap_2023-08-07_23:30:02_weekly
autosnap_2023-08-09_00:00:02_daily
autosnap_2023-08-10_00:00:04_daily
autosnap_2023-08-11_00:00:01_daily
autosnap_2023-08-12_00:00:03_daily
autosnap_2023-08-13_00:00:01_daily
autosnap_2023-08-14_00:00:01_daily
autosnap_2023-08-14_23:30:50_weekly
autosnap_2023-08-15_00:00:02_daily
autosnap_2023-08-15_07:00:02_hourly
autosnap_2023-08-15_08:00:02_hourly
autosnap_2023-08-15_09:00:02_hourly
autosnap_2023-08-15_10:00:01_hourly
$ sudo cd autosnap_2023-04-01_00:00:02_monthly
$ sudo ls 
(all my files in my dataset as of the snapshot on April 1st 2023)

As far as I know, you can manipulate and view these files, just as if it was part of the normal file system.

If you really want to 'restore' the snapshot to current active file system area, you could always 'rsync' or 'cp' the files from a snapshot to the active area.

Take a snapshot of the current state, just in case you have problems. (of course, use your current date and time)

$ zfs snapshot cypher-pool/data@backup_2023-08-21_16:20:42_backup

Start with something like. (Please confirm options before using)

$ cd /data/.zfs/snapshot`
$ rsync -Pav autosnap_2023-04-01_00:00:02_monthly/* /data/

Note: Example snapshots, as if created by ZFS Sanoid, https://github.com/jimsalterjrs/sanoid .