From ebcedbc89b58cb3fbe5bd97bcf53fd7ec6fc99f1 Mon Sep 17 00:00:00 2001 From: Peter Date: Mon, 1 Dec 2025 00:10:25 +0100 Subject: [PATCH] Fix --restore-properties in case of recursive replication --- syncoid | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/syncoid b/syncoid index 092b6af..ba2039f 100755 --- a/syncoid +++ b/syncoid @@ -924,7 +924,22 @@ sub runsynccmd { if (defined $args{'restore-properties'}) { foreach my $key (keys %properties) { my $value = $properties{$key}; - my ($skey, $ikey) = split(/:/, $key); + my @parts = split(/:/, $key); + my $skey = ""; + my $ikey = ""; + my $is_recursive = 0; + if (@parts > 2) { + if($parts[0] eq 'syncoid' && $parts[1] eq 'syncoid') { + shift @parts; + $skey = $parts[0]; + $ikey = join(':', @parts); + $is_recursive = 1; + } + } else { + $skey = $parts[0]; + $ikey = $parts[1]; + } + #my ($skey, $ikey) = split(/:/, $key); if (!length($ikey)) { my $skeypresent = 0; foreach my $key1 (keys %properties) { @@ -943,15 +958,21 @@ sub runsynccmd { } } } else { - if(!istargetpropertypresent($ikey)) { - if($value eq "*default*") { - writelog('DEBUG', "will unset $ikey ..."); - $recvoptions .= " -x $ikey"; - } else { + if (!$is_recursive) { + if(!istargetpropertypresent($ikey)) { + if($value eq "*default*") { + writelog('DEBUG', "will unset $ikey ..."); + $recvoptions .= " -x $ikey"; + } else { + writelog('DEBUG', "will set $ikey to $value ..."); + my $pair = escapeshellparam("$ikey=$value"); + $recvoptions .= " -o $pair"; + } + } + } else { writelog('DEBUG', "will set $ikey to $value ..."); my $pair = escapeshellparam("$ikey=$value"); $recvoptions .= " -o $pair"; - } } } }