mirror of https://github.com/digint/btrbk
btrbk: adapted subvolume creation for refactored configuration
parent
9908ed42f0
commit
ef5658c1b0
56
btrbk
56
btrbk
|
@ -865,7 +865,7 @@ MAIN:
|
||||||
{
|
{
|
||||||
my $svol = $config_subvol->{svol} || die;
|
my $svol = $config_subvol->{svol} || die;
|
||||||
unless(subvol($sroot, $svol)) {
|
unless(subvol($sroot, $svol)) {
|
||||||
ERROR "subvolume \"$svol\" not present in btrfs subvolume list for \"$sroot\", skipping";
|
WARN "Subvolume \"$svol\" not present in btrfs subvolume list for \"$sroot\", skipping section";
|
||||||
$config_subvol->{ABORTED} = 1;
|
$config_subvol->{ABORTED} = 1;
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
@ -874,7 +874,7 @@ MAIN:
|
||||||
my $droot = $config_target->{droot} || die;
|
my $droot = $config_target->{droot} || die;
|
||||||
$vol_info{$droot} //= btr_subtree($droot);
|
$vol_info{$droot} //= btr_subtree($droot);
|
||||||
unless($vol_info{$droot}) {
|
unless($vol_info{$droot}) {
|
||||||
ERROR "Failed to read btrfs subvolume list for \"$droot\", skipping";
|
WARN "Failed to read btrfs subvolume list for \"$droot\", skipping target";
|
||||||
$config_target->{ABORTED} = 1;
|
$config_target->{ABORTED} = 1;
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
@ -936,19 +936,14 @@ MAIN:
|
||||||
#
|
#
|
||||||
my $timestamp = sprintf("%04d%02d%02d", @today);
|
my $timestamp = sprintf("%04d%02d%02d", @today);
|
||||||
my %snapshot_cache;
|
my %snapshot_cache;
|
||||||
foreach my $job (@$jobs)
|
foreach my $config_vol (@{$config->{VOLUME}})
|
||||||
{
|
{
|
||||||
my $sroot = $job->{sroot} || die;
|
next if($config_vol->{ABORTED});
|
||||||
my $svol = $job->{svol} || die;
|
my $sroot = $config_vol->{sroot} || die;
|
||||||
my $droot = $job->{droot} || die;
|
foreach my $config_subvol (@{$config_vol->{SUBVOLUME}})
|
||||||
my $type = $job->{type} || die;
|
{
|
||||||
|
next if($config_subvol->{ABORTED});
|
||||||
unless(subvol($sroot, $svol)) {
|
my $svol = $config_subvol->{svol} || die;
|
||||||
WARN "Source subvolume not found, aborting job: $sroot/$svol";
|
|
||||||
$job->{ABORTED} = 1;
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $snapshot;
|
my $snapshot;
|
||||||
my $snapshot_name;
|
my $snapshot_name;
|
||||||
if($snapshot_cache{"$sroot/$svol"})
|
if($snapshot_cache{"$sroot/$svol"})
|
||||||
|
@ -970,33 +965,44 @@ MAIN:
|
||||||
$snapshot_name = "$svol$postfix";
|
$snapshot_name = "$svol$postfix";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $create_snapshot = config_key($config_subvol, "snapshot_create_always"); # TODO: check for "yes", ...
|
||||||
|
foreach my $config_target (@{$config_subvol->{TARGET}})
|
||||||
|
{
|
||||||
|
next if($config_target->{ABORTED});
|
||||||
|
my $droot = $config_target->{droot} || die;
|
||||||
if(subvol($droot, $snapshot_name)) {
|
if(subvol($droot, $snapshot_name)) {
|
||||||
# TODO: this seems not right here: maybe just skip this check, and panic later
|
# TODO: this seems not right here: maybe just skip this check, and panic later
|
||||||
WARN "Snapshot already exists at destination, aborting job: $droot/$snapshot_name";
|
WARN "Snapshot already exists at destination, skipping target: $droot/$snapshot_name";
|
||||||
$job->{ABORTED} = 1;
|
$config_target->{ABORTED} = 1;
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
if($config_target->{target_type} eq "send-receive") {
|
||||||
|
$create_snapshot = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unless($create_snapshot) {
|
||||||
|
WARN "No snapshots to be created, skipping subvolume: $sroot/$svol";
|
||||||
|
$config_subvol->{ABORTED} = 1;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
create_snapdir($sroot, $svol, $snapdir);
|
create_snapdir($sroot, $svol, $snapdir);
|
||||||
|
|
||||||
# make snapshot of svol, if not already created by another job
|
# make snapshot of svol, if not already created by another job
|
||||||
unless($snapshot_cache{"$sroot/$svol"})
|
unless($snapshot_cache{"$sroot/$svol"})
|
||||||
{
|
{
|
||||||
DEBUG "***";
|
|
||||||
DEBUG "*** snapshot";
|
|
||||||
DEBUG "*** source: $sroot/$svol";
|
|
||||||
DEBUG "*** dest : $snapshot";
|
|
||||||
DEBUG "***";
|
|
||||||
INFO "Creating subvolume snapshot for: $sroot/$svol";
|
INFO "Creating subvolume snapshot for: $sroot/$svol";
|
||||||
|
|
||||||
unless(btrfs_snapshot("$sroot/$svol", $snapshot)) {
|
unless(btrfs_snapshot("$sroot/$svol", $snapshot)) {
|
||||||
WARN "Failed to create snapshot, aborting job: $sroot/$svol";
|
WARN "Failed to create snapshot, skipping subvolume: $sroot/$svol";
|
||||||
$job->{ABORTED} = 1;
|
$config_subvol->{ABORTED} = 1;
|
||||||
}
|
}
|
||||||
$snapshot_cache{"$sroot/$svol"} = { name => $snapshot_name,
|
$snapshot_cache{"$sroot/$svol"} = { name => $snapshot_name,
|
||||||
file => $snapshot };
|
file => $snapshot };
|
||||||
}
|
}
|
||||||
$job->{snapshot} = $snapshot;
|
$config_subvol->{snapshot} = $snapshot;
|
||||||
$job->{snapshot_name} = $snapshot_name;
|
$config_subvol->{snapshot_name} = $snapshot_name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue