Reviewed-by: Fabian Grünbichler <f.gruenbich...@proxmox.com> IMHO this would also be a candidate for applying now - but held off because of the RFC prefix ;)
On November 7, 2024 5:51 pm, Fiona Ebner wrote: > In preparation to re-use it for restore from backup providers. > > Signed-off-by: Fiona Ebner <f.eb...@proxmox.com> > --- > > New in v3. > > src/PVE/LXC/Create.pm | 42 +++++++++++++++++++++++++----------------- > 1 file changed, 25 insertions(+), 17 deletions(-) > > diff --git a/src/PVE/LXC/Create.pm b/src/PVE/LXC/Create.pm > index 7c5bf0a..8c8cb9a 100644 > --- a/src/PVE/LXC/Create.pm > +++ b/src/PVE/LXC/Create.pm > @@ -59,12 +59,34 @@ sub restore_proxmox_backup_archive { > $scfg, $storeid, $cmd, $param, userns_cmd => $userns_cmd); > } > > -sub restore_tar_archive { > - my ($archive, $rootdir, $conf, $no_unpack_error, $bwlimit) = @_; > +my sub restore_tar_archive_command { > + my ($conf, $opts, $rootdir, $bwlimit) = @_; > > my ($id_map, $root_uid, $root_gid) = PVE::LXC::parse_id_maps($conf); > my $userns_cmd = PVE::LXC::userns_command($id_map); > > + my $cmd = [@$userns_cmd, 'tar', 'xpf', '-', $opts->@*, '--totals', > + @PVE::Storage::Plugin::COMMON_TAR_FLAGS, > + '-C', $rootdir]; > + > + # skip-old-files doesn't have anything to do with time (old/new), but is > + # simply -k (annoyingly also called --keep-old-files) without the 'treat > + # existing files as errors' part... iow. it's bsdtar's interpretation of > -k > + # *sigh*, gnu... > + push @$cmd, '--skip-old-files'; > + push @$cmd, '--anchored'; > + push @$cmd, '--exclude' , './dev/*'; > + > + if (defined($bwlimit)) { > + $cmd = [ ['cstream', '-t', $bwlimit*1024], $cmd ]; > + } > + > + return $cmd; > +} > + > +sub restore_tar_archive { > + my ($archive, $rootdir, $conf, $no_unpack_error, $bwlimit) = @_; > + > my $archive_fh; > my $tar_input = '<&STDIN'; > my @compression_opt; > @@ -92,21 +114,7 @@ sub restore_tar_archive { > $tar_input = '<&'.fileno($archive_fh); > } > > - my $cmd = [@$userns_cmd, 'tar', 'xpf', '-', @compression_opt, '--totals', > - @PVE::Storage::Plugin::COMMON_TAR_FLAGS, > - '-C', $rootdir]; > - > - # skip-old-files doesn't have anything to do with time (old/new), but is > - # simply -k (annoyingly also called --keep-old-files) without the 'treat > - # existing files as errors' part... iow. it's bsdtar's interpretation of > -k > - # *sigh*, gnu... > - push @$cmd, '--skip-old-files'; > - push @$cmd, '--anchored'; > - push @$cmd, '--exclude' , './dev/*'; > - > - if (defined($bwlimit)) { > - $cmd = [ ['cstream', '-t', $bwlimit*1024], $cmd ]; > - } > + my $cmd = restore_tar_archive_command($conf, [@compression_opt], > $rootdir, $bwlimit); > > if ($archive eq '-') { > print "extracting archive from STDIN\n"; > -- > 2.39.5 > > > > _______________________________________________ > pve-devel mailing list > pve-devel@lists.proxmox.com > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel > > > _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel