From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 42AB6618C8 for ; Fri, 20 Nov 2020 15:51:22 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 389D713856 for ; Fri, 20 Nov 2020 15:50:52 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 9ED0B13830 for ; Fri, 20 Nov 2020 15:50:50 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 68F1B401AA for ; Fri, 20 Nov 2020 15:50:50 +0100 (CET) From: Fabian Ebner To: pve-devel@lists.proxmox.com Date: Fri, 20 Nov 2020 15:50:44 +0100 Message-Id: <20201120145045.31543-5-f.ebner@proxmox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201120145045.31543-1-f.ebner@proxmox.com> References: <20201120145045.31543-1-f.ebner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.010 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [lxc.pm] Subject: [pve-devel] [PATCH container 4/5] vzdump: allow relative exclude patterns for snapshot and stop mode X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Nov 2020 14:51:22 -0000 to make the behavior consistent across modes. For suspend mode, relative patterns worked for a long time, because the exclusion already happens when rsync copies the data during an earlier stage of the backup. For the other two methods, the way the patterns are passed to tar (after the '--anchored' option and prefixed with a dot) meant that relative patterns had no effect previously. Users which have a relative exclude path by accident (if it's not by accident then this fixes the behavior) and did not use suspend mode (if they did use suspend mode, they hopefully would have noticed the unintended exclusion then) will be affected by this change. Signed-off-by: Fabian Ebner --- The alternative way to make things consistent is to warn/die on relative patterns and not pass along relative patterns to rsync. That would be a breaking change for the (likely few) existing users of relative patterns. With the approach from the patch, the behavior is also consisten with pxar/manual usage of proxmox-backup-client. And the next patch further unifies the behavior for non-manual usage of the backup client. src/PVE/VZDump/LXC.pm | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/PVE/VZDump/LXC.pm b/src/PVE/VZDump/LXC.pm index c02c6e1..eb07430 100644 --- a/src/PVE/VZDump/LXC.pm +++ b/src/PVE/VZDump/LXC.pm @@ -426,9 +426,23 @@ sub archive { push @$tar, "--directory=$tmpdir", './etc/vzdump/pct.conf'; push @$tar, "./etc/vzdump/pct.fw" if $task->{fw}; push @$tar, "--directory=$snapdir"; - push @$tar, '--no-anchored', '--exclude=lost+found' if $userns_cmd; + + my @findexcl_no_anchored = (); + my @findexcl_anchored = (); + foreach my $pattern (@{$findexcl}) { + if ($pattern !~ m|^/|) { + push @findexcl_no_anchored, $pattern; + } else { + push @findexcl_anchored, $pattern; + } + } + + push @$tar, '--no-anchored'; + push @$tar, '--exclude=lost+found' if $userns_cmd; + push @$tar, map { "--exclude=$_" } @findexcl_no_anchored; + push @$tar, '--anchored'; - push @$tar, map { "--exclude=.$_" } @{$findexcl}; + push @$tar, map { "--exclude=.$_" } @findexcl_anchored; push @$tar, @sources; -- 2.20.1