[pve-devel] [RFC container v2 22/25] backup: implement backup for external providers

Fiona Ebner f.ebner at proxmox.com
Tue Aug 13 15:28:26 CEST 2024


The filesystem structure is made available as a directory in a
consistent manner (with details depending on the vzdump backup mode)
just like for regular backup via tar.

The backup provider needs to back up the guest and firewall
configuration and then the filesystem structure, honoring the ID maps
(for unprivileged containers) as well as file exclusions and the
bandwidth limit.

Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
---

Changes in v2:
* Adapt to API changes.

 src/PVE/VZDump/LXC.pm | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/PVE/VZDump/LXC.pm b/src/PVE/VZDump/LXC.pm
index 67d13db..0fc2a94 100644
--- a/src/PVE/VZDump/LXC.pm
+++ b/src/PVE/VZDump/LXC.pm
@@ -373,7 +373,27 @@ sub archive {
     my $userns_cmd = $task->{userns_cmd};
     my $findexcl = $self->{vzdump}->{findexcl};
 
-    if ($self->{vzdump}->{opts}->{pbs}) {
+    if (my $backup_provider = $self->{vzdump}->{'backup-provider'}) {
+	$self->loginfo("starting external backup via " . $backup_provider->provider_name());
+
+	my ($mechanism) = $backup_provider->backup_get_mechanism($vmid, 'lxc');
+	die "mechanism '$mechanism' requested by backup provider is not supported for containers\n"
+	    if $mechanism ne 'directory';
+
+	my $config_file = "$tmpdir/etc/vzdump/pct.conf";
+	my $firewall_file = "$tmpdir/etc/vzdump/pct.fw";
+
+
+	my $conf = PVE::LXC::Config->load_config($vmid);
+	my ($id_map, undef, undef) = PVE::LXC::parse_id_maps($conf);
+	my $info = {
+	    directory => $snapdir,
+	    sources => [@sources],
+	};
+	$info->{'firewall-config'} = $firewall_file if -e $firewall_file;
+	$info->{'bandwidth-limit'} = $opts->{bwlimit} * 1024 if $opts->{bwlimit};
+	$backup_provider->backup_container($vmid, $config_file, $id_map, $findexcl, $info);
+    } elsif ($self->{vzdump}->{opts}->{pbs}) {
 
 	my $param = [];
 	push @$param, "pct.conf:$tmpdir/etc/vzdump/pct.conf";
-- 
2.39.2





More information about the pve-devel mailing list