Major changes from nexenta versions to support running under unbuntu.
[zfs-ubuntu/.git] / zfs-replicate-all
index 6f105d673064f450780fd13305edc79b8ca5fb35..c47b86f952930538361b488808ddf245e3fa46bf 100755 (executable)
@@ -61,7 +61,7 @@ replicate() {
 
 # This function obtains the date a given snapshot was created in epoch seconds
 snapshot_age() {
-  snapshot=${local_pool}/${1}${previous_backup_marker}
+  snapshot=${backup_pool}/${1}${previous_backup_marker}
   $zfs list -t snapshot ${snapshot} > /dev/null 2>&1
   if [ $? == 0 ]; then
     $zfs get creation ${snapshot} > /dev/null 2>&1
@@ -77,17 +77,32 @@ snapshot_age() {
   fi
 }
 
-# Obtain the zpool guid for the local pool
-local_pool_guid=`zpool get guid $local_pool 2>&1 | grep $local_pool | awk '{ print $3 }'`
-zpool get guid $local_pool > /dev/null 2>&1
+# Mount the local backup pool if needed and the option is given to do so, else error out
+zpool list -H "$backup_pool" >/dev/null 2>&1
 if [ $? != 0 ]; then
-  echo >&2 "-E- Unable to extract the guid for the local pool: $local_pool"
+  if [[ $import_export_backup_pool == 1 ]]; then
+    zpool import $backup_pool
+    if [ $? != 0 ]; then
+      echo "-E- unable to import the backup pool $backup_pool"
+      exit 1
+    fi
+  else 
+    echo "-E- The local backup pool, '$backup_pool' doesn't seem to exist." $mailto
+    exit 1
+  fi
+fi
+
+# Obtain the zpool guid for the local backup pool
+backup_pool_guid=`zpool get guid $backup_pool 2>&1 | grep $backup_pool | awk '{ print $3 }'`
+zpool get guid $backup_pool > /dev/null 2>&1
+if [ $? != 0 ]; then
+  echo >&2 "-E- Unable to extract the guid for the local backup pool: $backup_pool"
   exit 1
 fi
 
 # Setup our backup marker names
-current_backup_marker=@current-backup-${local_pool_guid}
-previous_backup_marker=@previous-backup-${local_pool_guid}
+current_backup_marker=@current-backup-${backup_pool_guid}
+previous_backup_marker=@previous-backup-${backup_pool_guid}
 
 # Auto snapshot every zfs filesystem on the system specified below
 echo "$date ZFS replicate started" >> $logfile
@@ -104,10 +119,18 @@ rm -f $tmpfile
 
 # Replicate the sorted filesystems
 for filesystem in $sorted_filesystems; do
-  echo "-> Replicating $remote:$filesystem to ${local_pool}/${filesystem}" | tee -a $mylogfile
+  echo "-> Replicating $remote:$filesystem to ${backup_pool}/${filesystem}" | tee -a $mylogfile
   replicate $remote $filesystem
 done
 
+# Export the local pool if told to do so
+if [[ $import_export_backup_pool == 1 ]]; then
+  zpool export $backup_pool
+  if [ $? != 0 ]; then
+    fatal_and_exit "-E- unable to export the local backup pool $backup_pool"
+  fi
+fi
+
 # All done
 echo `date` ZFS replicate complete >> $logfile
 echo `date` ZFS replicate complete | tee -a $mylogfile