### we need to create backend file first: $ mkfile 20g /share/c0d0s0.file ### then we need to create zfs filesystem in there with -R $new_root (sets altroot= property) ### 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 need to 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 of due to the buggy behaviour there are ### obviously some volumes mounted un-properly because of bad 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 was foo/ROOT/ROOT never mounted ### so just changing default mountpoint is necessary, please note, that due to active altroot= we have to put ### there relative path as far as final path can be split as $altroot/$mountpoint $ zfs set mountpoint=/root foo/ROOT/ROOT $ zfs mount foo/ROOT/ROOT ###### ###### example from real life .. we have already all of above, we need manually invoke mounting ###### of foo/ROOT/ROOT anyway and i really dunno why ... ###### # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT rpool 136G 44.1G 91.9G 32% ONLINE - # zpool import -d /share/ pool: foo id: 9416734535543432800 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: foo ONLINE /share/c0d0s0.file ONLINE # zpool import -R /backup -d /share/ foo # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT foo 19.9G 17.6G 2.27G 88% ONLINE /backup rpool 136G 44.1G 91.9G 32% ONLINE - # zfs mount | sort foo /backup/rpool foo/export /backup/export foo/export/home /backup/export/home foo/instances /backup/instances 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/ztemplate /backup/zones/ztemplate rpool /rpool rpool/ROOT/ROOT / rpool/ROOT/share /share rpool/export /export rpool/export/home /export/home rpool/instances /instances rpool/zones /export/home/zones rpool/zones/am1 /export/home/zones/am1 rpool/zones/am71 /export/home/zones/am71 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/ztemplate /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 # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT rpool 136G 44.1G 91.9G 32% ONLINE -