I''m trying to figure out how to restore a filesystem using zfs recv.
Obviously there''s some important concept I don''t understand.
I''m
using my zfsdump script to create the dumps that I''m going to restore.
Here''s what I tried:
Save a "level 0" dump in d.0:
datsun# zfsdump 0 home/tckuser > d.0
zfs send -R -v -i home/tckuser at origin home/tckuser at level-0
Now a "level 9" dump in d.9:
datsun# zfsdump 9 home/tckuser > d.9
zfs send -R -v -i home/tckuser at level-0 home/tckuser at level-9
Try to restore the level 0 in a completely new and empty filesystem
created with zpool:
datsun# mkfile -n 64m /cache/tmp/zfs
datsun# zpool create test /cache/tmp/zfs
datsun# zfs recv test < d.0
cannot receive: must use -d to receive replication (send -R) stream
I guess I should special-case a "level 0" dump so it doesn''t
use -R?
I figured -R relative to the origin would have the same effect.
Ok, it says use -d, I''ll use -d:
datsun# zfs recv -d test < d.0
cannot open ''test/tckuser'': dataset does not exist
Hmmm, ok, I guess I have to create it myself, despite what the man
page says:
datsun# zfs create test/tckuser
cannot create ''test/tckuser'': dataset already exists
Um, ok, that didn''t work. Maybe it really did create it the first
time but just didn''t restore into it?
datsun# zfs recv -d test < d.0
cannot receive new filesystem stream: destination
''test/tckuser'' exists
must specify -F to overwrite it
Grrr...
datsun# zfs recv -F -d test < d.0
cannot receive new filesystem stream: destination has snapshots (eg.
test/tckuser at level-0)
must destroy them to overwrite it
Argh!!!!
What did I do wrong?