This commit is contained in:
Silvan Raijer 2025-06-15 14:38:50 +02:00 committed by GitHub
commit cd77414953
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 12 additions and 6 deletions

18
syncoid
View File

@ -27,7 +27,7 @@ GetOptions(\%args, "no-command-checks", "monitor-version", "compress=s", "dumpsn
"no-clone-handling", "no-privilege-elevation", "force-delete", "no-rollback", "create-bookmark", "use-hold",
"pv-options=s" => \$pvoptions, "keep-sync-snap", "preserve-recordsize", "mbuffer-size=s" => \$mbuffer_size,
"delete-target-snapshots", "insecure-direct-connection=s", "preserve-properties",
"include-snaps=s@", "exclude-snaps=s@", "exclude-datasets=s@")
"include-snaps=s@", "exclude-snaps=s@", "exclude-datasets=s@", "hostid=s")
or pod2usage(2);
my %compressargs = %{compressargset($args{'compress'} || 'default')}; # Can't be done with GetOptions arg, as default still needs to be set
@ -140,6 +140,17 @@ if (length $args{'identifier'}) {
$identifier = "$args{'identifier'}_";
}
my $hostid = hostname();
if (length $args{'hostid'}) {
if ($args{'hostid'} !~ /^[a-zA-Z0-9-_:.]+$/) {
# invalid extra hostid
writelog('WARN', "hostid contains invalid chars!");
pod2usage(2);
exit 127;
}
$hostid = "$args{'hostid'}";
}
# figure out if source and/or target are remote.
$sshcmd = "$sshcmd $args{'sshconfig'} $args{'sshcipher'} $sshoptions $args{'sshport'} $args{'sshkey'}";
writelog('DEBUG', "SSHCMD: $sshcmd");
@ -377,7 +388,6 @@ sub syncdataset {
writelog('INFO', "Skipping dataset (syncoid:sync=false): $sourcefs...");
return 0;
} else {
my $hostid = hostname();
my @hosts = split(/,/,$sync);
if (!(grep $hostid eq $_, @hosts)) {
writelog('INFO', "Skipping dataset (syncoid:sync doesn't include $hostid): $sourcefs...");
@ -794,7 +804,6 @@ sub syncdataset {
if (defined $args{'use-hold'}) {
my $holdcmd;
my $holdreleasecmd;
my $hostid = hostname();
my $matchingsnapescaped = escapeshellparam($matchingsnap);
my $holdname = "syncoid\_$identifier$hostid";
if ($sourcehost ne '') {
@ -1669,8 +1678,6 @@ sub pruneoldsyncsnaps {
if ($rhost ne '') { $rhost = "$sshcmd $rhost"; }
my $hostid = hostname();
my $mysudocmd;
if ($isroot) { $mysudocmd=''; } else { $mysudocmd = $sudocmd; }
@ -1746,7 +1753,6 @@ sub newsyncsnap {
}
my $mysudocmd;
if ($isroot) { $mysudocmd = ''; } else { $mysudocmd = $sudocmd; }
my $hostid = hostname();
my %date = getdate();
my $snapname = "syncoid\_$identifier$hostid\_$date{'stamp'}";
my $snapcmd = "$rhost $mysudocmd $zfscmd snapshot $fsescaped\@$snapname\n";