diff --git a/pbs-client/src/pxar/create.rs b/pbs-client/src/pxar/create.rs index c573c2a3..2577cf98 100644 --- a/pbs-client/src/pxar/create.rs +++ b/pbs-client/src/pxar/create.rs @@ -434,15 +434,6 @@ 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(), @@ -453,6 +444,15 @@ 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!(