From bb7167659bcd8d4276930c29cec87584777a6809 Mon Sep 17 00:00:00 2001 From: huaqingsimeng <1004904143@qq.com> Date: Fri, 7 Jul 2023 16:31:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=87=E4=BB=BD=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E5=BA=94=E7=94=A8=E9=BB=98=E8=AE=A4=E5=A4=87=E4=BB=BD?= =?UTF-8?q?=E7=9A=84=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huaqingsimeng --- .../b_json/b_json_entity_extension_config_test.cpp | 4 ++-- utils/include/b_filesystem/b_dir.h | 9 ++++++++- utils/include/b_resources/b_constants.h | 6 +++--- utils/src/b_filesystem/b_dir.cpp | 10 +++++++++- utils/src/b_tarball/b_tarball_cmdline.cpp | 7 +++++-- 5 files changed, 27 insertions(+), 9 deletions(-) diff --git a/tests/unittests/backup_utils/b_json/b_json_entity_extension_config_test.cpp b/tests/unittests/backup_utils/b_json/b_json_entity_extension_config_test.cpp index 970d40f85..122f6424f 100644 --- a/tests/unittests/backup_utils/b_json/b_json_entity_extension_config_test.cpp +++ b/tests/unittests/backup_utils/b_json/b_json_entity_extension_config_test.cpp @@ -49,8 +49,8 @@ static vector DEFAULT_INCLUDE_DIR = { "data/storage/el2/base/files/", "data/storage/el2/base/preferences/", "data/storage/el2/base/haps/*/database/", - "data/storage/el2/base/haps/*/base/files/", - "data/storage/el2/base/haps/*/base/preferences/", + "data/storage/el2/base/haps/*/files/", + "data/storage/el2/base/haps/*/preferences/", }; static vector DEFAULT_EXCLUDE_DIR = {}; diff --git a/utils/include/b_filesystem/b_dir.h b/utils/include/b_filesystem/b_dir.h index 59a641409..27762942e 100644 --- a/utils/include/b_filesystem/b_dir.h +++ b/utils/include/b_filesystem/b_dir.h @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -48,7 +49,13 @@ public: static std::pair> GetBigFiles(const std::vector &includes, const std::vector &excludes); -private: + /** + * @brief Get the Dirs object + * + * @param paths 目录集合可带有通配符路径 + * @return std::vector 目录集合 + */ + static std::vector GetDirs(const std::vector &paths); }; } // namespace OHOS::FileManagement::Backup diff --git a/utils/include/b_resources/b_constants.h b/utils/include/b_resources/b_constants.h index 9a61caa0a..58a4a2358 100644 --- a/utils/include/b_resources/b_constants.h +++ b/utils/include/b_resources/b_constants.h @@ -123,7 +123,7 @@ static inline std::string_view EXT_BACKUP_MANAGE = "manage.json"; // 包管理元数据配置文件 static inline std::string_view BACKUP_CONFIG_JSON = "backup_config.json"; -// 恢复应用安装包路径 +// 恢复应用安装包URL判断 static inline std::string_view RESTORE_INSTALL_PATH = "/data/storage/el2/restore/bundle.hap"; // 应用默认备份的目录,其均为相对根路径的路径。为避免模糊匹配,务必以斜线为结尾。 @@ -132,8 +132,8 @@ static inline std::array PATHES_TO_BACKUP = { "data/storage/el2/base/files/", "data/storage/el2/base/preferences/", "data/storage/el2/base/haps/*/database/", - "data/storage/el2/base/haps/*/base/files/", - "data/storage/el2/base/haps/*/base/preferences/", + "data/storage/el2/base/haps/*/files/", + "data/storage/el2/base/haps/*/preferences/", }; } // namespace OHOS::FileManagement::Backup::BConstants diff --git a/utils/src/b_filesystem/b_dir.cpp b/utils/src/b_filesystem/b_dir.cpp index 3da01dbce..93eb3eb60 100644 --- a/utils/src/b_filesystem/b_dir.cpp +++ b/utils/src/b_filesystem/b_dir.cpp @@ -103,7 +103,7 @@ tuple> BDir::GetDirFiles(const string &path) return {BError(BError::Codes::OK).GetCode(), files}; } -set ExpandPathWildcard(const vector &vec) +static set ExpandPathWildcard(const vector &vec) { unique_ptr> gl {new glob_t, [](glob_t *ptr) { globfree(ptr); }}; *gl = {}; @@ -176,4 +176,12 @@ pair> BDir::GetBigFiles(const vector & HILOGI("total number of big files is %{public}d", num); return {ERR_OK, move(bigFiles)}; } + +vector BDir::GetDirs(const vector &paths) +{ + vector wildcardPath(paths.begin(), paths.end()); + set inc = ExpandPathWildcard(wildcardPath); + vector dirs(inc.begin(), inc.end()); + return dirs; +} } // namespace OHOS::FileManagement::Backup \ No newline at end of file diff --git a/utils/src/b_tarball/b_tarball_cmdline.cpp b/utils/src/b_tarball/b_tarball_cmdline.cpp index 521fc6e44..1dbb1bf8e 100644 --- a/utils/src/b_tarball/b_tarball_cmdline.cpp +++ b/utils/src/b_tarball/b_tarball_cmdline.cpp @@ -20,6 +20,7 @@ #include #include "b_error/b_error.h" +#include "b_filesystem/b_dir.h" #include "b_process/b_guard_cwd.h" #include "b_process/b_process.h" @@ -53,10 +54,12 @@ void BTarballCmdline::Tar(string_view root, vector includes, vector throw BError(BError::Codes::UTILS_INVAL_TARBALL_ARG, "tar includes argument must be not empty"); } - for (auto &&include : includes) { + vector includesDirs = BDir::GetDirs(includes); + for (auto &&include : includesDirs) { argv.push_back(include); } - for (auto &&exclude : excludes) { + vector excludesDirs = BDir::GetDirs(excludes); + for (auto &&exclude : excludesDirs) { argv.push_back("--exclude"); argv.push_back(exclude); } -- Gitee