]> git.proxmox.com Git - proxmox-backup.git/commitdiff
src/backup/backup_info.rs: new helper to list files
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 6 Mar 2019 09:49:01 +0000 (10:49 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 6 Mar 2019 10:02:08 +0000 (11:02 +0100)
src/backup/backup_info.rs
src/backup/datastore.rs

index 0fa7f1e644cea69aac1f8ea11e354c0156558ddf..ab63beb8698ce94bcb6d8615b849e6784a4049b4 100644 (file)
@@ -157,10 +157,25 @@ impl BackupInfo {
         }
     }
 
-    pub fn list_backups(path: &Path) -> Result<Vec<BackupInfo>, Error> {
+    pub fn list_files(base_path: &Path, backup_dir: &BackupDir) -> Result<Vec<String>, Error> {
+        let mut path = base_path.to_owned();
+        path.push(backup_dir.relative_path());
+
+        let mut files = vec![];
+
+        tools::scandir(libc::AT_FDCWD, &path, &BACKUP_FILE_REGEX, |_, filename, file_type| {
+            if file_type != nix::dir::Type::File { return Ok(()); }
+            files.push(filename.to_owned());
+            Ok(())
+        })?;
+
+        Ok(files)
+    }
+
+    pub fn list_backups(base_path: &Path) -> Result<Vec<BackupInfo>, Error> {
         let mut list = vec![];
 
-        tools::scandir(libc::AT_FDCWD, path, &BACKUP_TYPE_REGEX, |l0_fd, backup_type, file_type| {
+        tools::scandir(libc::AT_FDCWD, base_path, &BACKUP_TYPE_REGEX, |l0_fd, backup_type, file_type| {
             if file_type != nix::dir::Type::Directory { return Ok(()); }
             tools::scandir(l0_fd, backup_type, &BACKUP_ID_REGEX, |l1_fd, backup_id, file_type| {
                 if file_type != nix::dir::Type::Directory { return Ok(()); }
index a0e69b09de99e7f46a09e3d9bc8d63a1a7f8384e..429da66effa7e48490b5f8fc1b6856565ab0dd9f 100644 (file)
@@ -168,6 +168,11 @@ impl DataStore {
         BackupInfo::list_backups(&path)
     }
 
+    pub fn list_files(&self, backup_dir: &BackupDir) -> Result<Vec<String>, Error> {
+        let path = self.base_path();
+        BackupInfo::list_files(&path, backup_dir)
+    }
+
     pub fn list_images(&self) -> Result<Vec<PathBuf>, Error> {
         let base = self.base_path();