diff --git a/pbs-client/src/pxar/create.rs b/pbs-client/src/pxar/create.rs index 2577cf98..c573c2a3 100644 --- a/pbs-client/src/pxar/create.rs +++ b/pbs-client/src/pxar/create.rs @@ -434,6 +434,15 @@ impl Archiver { assert_single_path_component(os_file_name)?; let full_path = self.path.join(os_file_name); + let match_path = PathBuf::from("/").join(full_path.clone()); + if self + .patterns + .matches(match_path.as_os_str().as_bytes(), None) + == Some(MatchType::Exclude) + { + continue; + } + let stat = match nix::sys::stat::fstatat( dir_fd, file_name.as_c_str(), @@ -444,15 +453,6 @@ impl Archiver { Err(err) => return Err(err).context(format!("stat failed on {:?}", full_path)), }; - let match_path = PathBuf::from("/").join(full_path.clone()); - if self - .patterns - .matches(match_path.as_os_str().as_bytes(), Some(stat.st_mode)) - == Some(MatchType::Exclude) - { - continue; - } - self.entry_counter += 1; if self.entry_counter > self.entry_limit { bail!(