Fixed zfs-replicate bug when a filesystem is created on the backup drive,
authorAlan J. Pippin <ajp@pippins.net>
Thu, 25 Sep 2008 15:26:00 +0000 (09:26 -0600)
committerAlan J. Pippin <ajp@pippins.net>
Thu, 25 Sep 2008 15:26:00 +0000 (09:26 -0600)
and the snapshots for that filesystem are all deleted over time, and new
ones are attempted to be sent to the backup drive. In this case, the script
was trying to send incremental, but there were no snapshots left on the
zfs filesystem. Now, if a filesystem exists on the backup drive but it
has no snapshots, that filesystem is removed so a full stream will be sent
of the first snapshot that is synced to the backup drive.

zfs-replicate

index 9a6b82e3655d680e2f645c00cd24fe247b4bdbf4..da3df12614ab76e8090bdeb0a468675f09930eeb 100755 (executable)
@@ -49,7 +49,12 @@ if ! zpool list -H "$dstpool" >/dev/null 2>&1; then
 fi
 
 if ! zfs list -rH -t snapshot "$dstfs" 2>&1 | grep "$dstfs@" > /dev/null 2>&1; then
-  echo >&2 "-W- No snapshots detected on the destination drive for this filesystem"
+  echo >&2 "-W- No snapshots detected on the destination drive for this filesystem: $dstfs"
+  if zfs list -t filesystem | grep "$dstfs"; then
+   echo >&2 "-I- Found zfs filesystem $dstfs on the destination pool $dstpool without any snapshots"
+   echo >&2 "-I- Removing the zfs filesystem: $dstfs"
+   zfs destroy "$dstfs" 
+  fi
   nodstsnaps=1
 fi