[pve-devel] [RFC container v2 22/25] backup: implement backup for external providers
Fabian Grünbichler
f.gruenbichler at proxmox.com
Thu Sep 12 14:43:58 CEST 2024
On August 13, 2024 3:28 pm, Fiona Ebner wrote:
> 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);
it might be easier to hide the idmapping from the backup provider? e.g.,
hand it a idmapped bindmount or something like that?
> + } elsif ($self->{vzdump}->{opts}->{pbs}) {
>
> my $param = [];
> push @$param, "pct.conf:$tmpdir/etc/vzdump/pct.conf";
> --
> 2.39.2
>
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>
>
>
More information about the pve-devel
mailing list