### we'll create first backend file: # mkfile 20g /share/c0d0s0.file ### then we'll create zfs filesystem in there altroot= alias -R $new_root is *neccessary if ### we plan to put there anothere rpool in living BE where will conflict mountpoints # zpool create -f -R /backup foo /share/c0d0s0.file ### then we'll create recursive snapshot for future `zfs send` # zfs snapshot -r rpool@main_backup0 ### destroying of any subvolume's snap will exclude that volume from `zfs send` # zfs destroy rpool/ROOT/share@main_backup0 ### here we send content of rpool@main_backup0 to our new zpool foo ### see that warning about missing rpool/ROOT/share@main_backup0 # zfs send -vR rpool@main_backup0 | zfs receive -Fd foo sending from @ to rpool@main_backup0 sending from @ to rpool/dump@main_backup0 sending from @ to rpool/ztemplate@snap1 sending from @snap1 to rpool/ztemplate@SUNWzone1 sending from @SUNWzone1 to rpool/ztemplate@SUNWzone2 sending from @SUNWzone2 to rpool/ztemplate@SUNWzone3 sending from @SUNWzone3 to rpool/ztemplate@SUNWzone4 sending from @SUNWzone4 to rpool/ztemplate@SUNWzone5 sending from @SUNWzone5 to rpool/ztemplate@SUNWzone6 sending from @SUNWzone6 to rpool/ztemplate@SUNWzone7 sending from @SUNWzone7 to rpool/ztemplate@SUNWzone8 sending from @SUNWzone8 to rpool/ztemplate@SUNWzone9 sending from @SUNWzone9 to rpool/ztemplate@main_backup0 sending from @ to rpool/ROOT@main_backup0 sending from @ to rpool/ROOT/ROOT@snap0 sending from @snap0 to rpool/ROOT/ROOT@main_backup0 WARNING: could not send rpool/ROOT/share@main_backup0: does not exist sending from @ to rpool/export@main_backup0 sending from @ to rpool/export/home@main_backup0 sending from @ to rpool/zones@main_backup0 sending from @ to rpool/zones/ossoF@snap0 sending from @snap0 to rpool/zones/ossoF@main_backup0 sending from @ to rpool/zones/simple-legacy@snap0 sending from @snap0 to rpool/zones/simple-legacy@ready sending from @ready to rpool/zones/simple-legacy@main_backup0 sending from @ to rpool/zones/am1@snap0 sending from @snap0 to rpool/zones/am1@snap1 sending from @snap1 to rpool/zones/am1@main_backup0 sending from @ to rpool/zones/commsF@snap0 sending from @snap0 to rpool/zones/commsF@main_backup0 sending from @ to rpool/zones/dsee1@main_backup0 sending from @ to rpool/zones/am71@snap0 sending from @snap0 to rpool/zones/am71@main_backup0 sending from @ to rpool/swap@main_backup0 sending from @ to rpool/instances@repl0 sending from @repl0 to rpool/instances@repl1 sending from @repl1 to rpool/instances@repl2 sending from @repl2 to rpool/instances@main_backup0 ### then we safely export whole volume because due to the buggy behaviour there couldn't be ### some volumes mounted properly because of mounting order: zpool export foo ### then we'll re-import it back again zpool import -R /backup -d /share foo ### optionally we can check with zfs mount if it's all okay .. in my case will be never mounted foo/ROOT/ROOT ### so just changing default mountpoint is necessary, please note that due to active altroot= we have to put ### there relative path because of absolut will be $altroot/$mountpoint zfs set mountpoint=/root foo/ROOT/ROOT zfs mount foo/ROOT/ROOT ###### now how it works: # zpool import -R /backup -d /share/ foo # zfs mount rpool/ROOT/ROOT / rpool/export /export rpool/export/home /export/home rpool/zones /export/home/zones rpool/zones/am1 /export/home/zones/am1 rpool/zones/commsF /export/home/zones/commsF rpool/zones/dsee1 /export/home/zones/dsee1 rpool/zones/ossoF /export/home/zones/ossoF rpool/zones/simple-legacy /export/home/zones/simple-legacy rpool/instances /instances rpool /rpool rpool/ROOT/share /share rpool/ztemplate /zones/ztemplate rpool/zones/am71 /export/home/zones/am71 foo/export /backup/export foo/export/home /backup/export/home foo/zones /backup/export/home/zones foo/zones/am1 /backup/export/home/zones/am1 foo/zones/am71 /backup/export/home/zones/am71 foo/zones/commsF /backup/export/home/zones/commsF foo/zones/dsee1 /backup/export/home/zones/dsee1 foo/zones/ossoF /backup/export/home/zones/ossoF foo/zones/simple-legacy /backup/export/home/zones/simple-legacy foo/instances /backup/instances foo /backup/rpool foo/ztemplate /backup/zones/ztemplate # zfs get mountpoint foo/ROOT/ROOT NAME PROPERTY VALUE SOURCE foo/ROOT/ROOT mountpoint /backup/root local # zfs mount foo/ROOT/ROOT # zfs mount | grep foo/ROOT/ROOT foo/ROOT/ROOT # zpool export foo