diff --git a/utils/src/b_json/b_json_entity_ext_manage.cpp b/utils/src/b_json/b_json_entity_ext_manage.cpp index c136a935872de69d4a638e38503687a561a23e8a..28a19d3acc09b57a82d23a1349602057e5b08847 100644 --- a/utils/src/b_json/b_json_entity_ext_manage.cpp +++ b/utils/src/b_json/b_json_entity_ext_manage.cpp @@ -46,6 +46,35 @@ static bool CheckBigFile(const string &tarFile) return false; } +/** + * @brief 判断是否属于自身打包的文件 + * + * @param fileName + */ +static bool CheckOwnPackTar(const string &fileName) +{ + HILOGI("CheckOwnPackTar fileName:%{public}s", fileName.data()); + if (access(fileName.c_str(), F_OK) != 0) { + HILOGI("file does not exists"); + return false; + } + // 如果不是在默认路径下的文件包,不属于自身打包的tar文件 + string::size_type pathPos = fileName.find("/data/storage/el2/backup/backup/"); + if (pathPos == string::npos || pathPos != 0) { + return false; + } + // 获取tar包名称 + string tarFile = ExtractFileName(fileName); + string::size_type pos = tarFile.find("."); + if (pos == string::npos) { + return false; + } + + string firstName = string(tarFile).substr(0, pos); + + return (firstName == "part") && (ExtractFileExt(tarFile) == "tar"); +} + static bool CheckUserTar(const string &fileName) { if (access(fileName.c_str(), F_OK) != 0) { @@ -142,7 +171,7 @@ void BJsonEntityExtManage::SetExtManage(const map lks = FindLinks(item, index); for (const auto &lk : lks) { value["hardlinks"].append(lk);