added sleep 0.1 s for netcat to start, verify snapshot creation
[sysadmin-cookbook] / recepies / zfs / zfs-replicate-pool.pl
index d0c14ba..4c5b494 100755 (executable)
@@ -5,6 +5,7 @@ use strict;
 use Net::OpenSSH;
 use Data::Dump qw(dump);
 use List::Util qw(first);
+use Time::Hires;
 
 my $arh = Net::OpenSSH->new('root@10.60.0.204');
 my $dev = Net::OpenSSH->new('root@10.60.0.202');
@@ -45,7 +46,7 @@ sub snapshots_from {
                push @{ $snapshot->{$fs} }, $name;
        }
 
-       warn "snapshots_from $host ",dump($snapshot),$/;
+#      warn "snapshots_from $host ",dump($snapshot),$/;
 
        return $snapshot;
 }
@@ -102,6 +103,8 @@ foreach my $fs ( @arh ) {
                my ($rin1,$pid1) = $dev->pipe_in($recv);
                warn ">> pid: $pid1";
 
+               sleep 0.1; # FIXME wait for netcat to start
+
                my $send = "zfs send $snapshot | nc -q 0 -w 5 10.60.0.202 8888";
                warn "<< $send\n";
                $arh->system($send);
@@ -112,6 +115,9 @@ foreach my $fs ( @arh ) {
                $dev->system("zfs set readonly=on $to_pool/$name") if $i == 0;
                die $dev->error if $dev->error;
 
+               $dev_snapshot = snapshots_from $dev;
+               die "can't find new snapshot $snap" unless $dev_snapshot->{$to_dev};
+
        }
 
 }