diff --git a/tests/unittests/backup_tools/backup_tool/tools_op_test.cpp b/tests/unittests/backup_tools/backup_tool/tools_op_test.cpp index 836802a2ca0513a41a2f075f87a7dbf08efa9f10..1fc1f4fc26b770dcabb71f3d5dba69e5714ebba3 100644 --- a/tests/unittests/backup_tools/backup_tool/tools_op_test.cpp +++ b/tests/unittests/backup_tools/backup_tool/tools_op_test.cpp @@ -167,28 +167,28 @@ HWTEST_F(ToolsOpTest, SUB_backup_tools_op_0500, testing::ext::TestSize.Level1) try { std::string bundleName = "test"; std::string wholePath = string(BConstants::BACKUP_TOOL_RECEIVE_DIR) + bundleName; - std::string incrementalpath = string(BConstants::BACKUP_TOOL_INCREMENTAL_RECEIVE_DIR) + bundleName; + std::string incrementalpath = string(BConstants::BACKUP_TOOL_INCREMENTAL_RECEIVE_DIR) + + bundleName + "/"+ DEFAULT_TEME + string(BConstants::BACKUP_TOOL_INCREMENTAL); if (access(incrementalpath.c_str(), F_OK) == 0) { ForceRemoveDirectory(incrementalpath.data()); } - int result = ToolsOp::GetFIleNums(bundleName, false); + int result = ToolsOp::GetFileNums(bundleName, DEFAULT_TEME, false); EXPECT_TRUE(result == DEFAULT_ERR_NUMBER); if (access(wholePath.c_str(), F_OK) == 0) { ForceRemoveDirectory(wholePath.data()); } - result = ToolsOp::GetFIleNums(bundleName, true); + result = ToolsOp::GetFileNums(bundleName); EXPECT_TRUE(result == DEFAULT_ERR_NUMBER); - if (access(incrementalpath.c_str(), F_OK) != 0) { ForceCreateDirectory(incrementalpath.data()); } - result = ToolsOp::GetFIleNums(bundleName, false); + result = ToolsOp::GetFileNums(bundleName, DEFAULT_TEME, false); EXPECT_TRUE(result == 0); if (access(wholePath.c_str(), F_OK) != 0) { ForceCreateDirectory(wholePath.data()); } - result = ToolsOp::GetFIleNums(bundleName, true); + result = ToolsOp::GetFileNums(bundleName); EXPECT_TRUE(result == 0); if (access(incrementalpath.c_str(), F_OK) == 0) { ForceRemoveDirectory(incrementalpath.data()); diff --git a/tools/backup_tool/include/tools_op.h b/tools/backup_tool/include/tools_op.h index ca0b49f8d607e2cbc663af55b018acec47eba8e5..3d124afb250e7e367c578f2ffeacef62dce7541d 100644 --- a/tools/backup_tool/include/tools_op.h +++ b/tools/backup_tool/include/tools_op.h @@ -25,6 +25,7 @@ namespace OHOS::FileManagement::Backup { const int DEFAULT_ERR_NUMBER = -1; +const std::string DEFAULT_TEME = "0"; class ToolsOp { public: using CRefVStrView = const std::vector &; @@ -119,7 +120,7 @@ public: * * @return int 错误码(0 表示成功,非零表示失败) */ - static int GetFIleNums(const std::string &bundleName, bool isWholeRestore = true); + static int GetFileNums(const std::string &bundleName, std::string time = "", bool isWholeRestore = true); private: Descriptor desc_; static inline std::vector opsAvailable_; diff --git a/tools/backup_tool/src/tools_op.cpp b/tools/backup_tool/src/tools_op.cpp index e098653098f30060eb4afa055d26b42d10bde5c4..d9c00b39ba79d23b2636144ef640847528cc0ffc 100644 --- a/tools/backup_tool/src/tools_op.cpp +++ b/tools/backup_tool/src/tools_op.cpp @@ -86,11 +86,14 @@ int ToolsOp::Execute(map> args) const return desc_.funcExec(args); } -int ToolsOp::GetFIleNums(const std::string &bundleName, bool isWholeRestore) +int ToolsOp::GetFileNums(const std::string &bundleName, std::string timeStr, bool isWholeRestore) { std::string path = ""; path = string(isWholeRestore? BConstants::BACKUP_TOOL_RECEIVE_DIR : BConstants::BACKUP_TOOL_INCREMENTAL_RECEIVE_DIR) + bundleName; + if (!isWholeRestore) { + path += std::string("/") + timeStr + std::string(BConstants::BACKUP_TOOL_INCREMENTAL); + } struct dirent *entry; printf("bundle path = %s\n", path.c_str()); DIR *dir = opendir(path.c_str()); diff --git a/tools/backup_tool/src/tools_op_incremental_restore.cpp b/tools/backup_tool/src/tools_op_incremental_restore.cpp index 421afe9a64b0c715b7fbf39aa8de4f0c879ea24c..5d7004bd2a4a2fd9fc9f71b170ebd9be028035dd 100644 --- a/tools/backup_tool/src/tools_op_incremental_restore.cpp +++ b/tools/backup_tool/src/tools_op_incremental_restore.cpp @@ -302,16 +302,16 @@ static int32_t Init(const string &pathCapFile, vector bundleNames, bool UniqueFd fd(open(realPath.data(), O_RDWR, S_IRWXU)); auto ctx = make_shared(); - size_t len = bundleNames.size(); - for (size_t i = 0; i < len; ++i) { - ctx->fileNums_[bundleNames[i]] = ToolsOp::GetFIleNums(bundleNames[i], false); - } int32_t ret = InitRestoreSession(ctx, bundleNames, times); if (ret != 0) { printf("Failed to init restore session error:%d\n", ret); return ret; } - + size_t len = bundleNames.size(); + size_t timeLen = times.size(); + for (size_t i = 0, j = 0; i < len && j < timeLen; ++i, ++j) { + ctx->fileNums_[bundleNames[i]] = ToolsOp::GetFileNums(bundleNames[i], times[i], false); + } if (depMode) { for (auto &bundleName : bundleNames) { UniqueFd fileFd(open(realPath.data(), O_RDWR, S_IRWXU)); diff --git a/tools/backup_tool/src/tools_op_incremental_restore_async.cpp b/tools/backup_tool/src/tools_op_incremental_restore_async.cpp index 733007e12e34a1383ff289407c69c17197fc82fe..804304bb045c6a6dd1d6c71f7e8631cc688bc518 100644 --- a/tools/backup_tool/src/tools_op_incremental_restore_async.cpp +++ b/tools/backup_tool/src/tools_op_incremental_restore_async.cpp @@ -372,7 +372,7 @@ static int32_t InitArg(const string &pathCapFile, auto ctx = make_shared(); size_t len = bundleNames.size(); for (size_t i = 0; i < len; ++i) { - ctx->fileNums_[bundleNames[i]] = ToolsOp::GetFIleNums(bundleNames[i], false); + ctx->fileNums_[bundleNames[i]] = ToolsOp::GetFileNums(bundleNames[i], DEFAULT_TEME, false); } ctx->session_ = BIncrementalSessionRestoreAsync::Init(BIncrementalSessionRestoreAsync::Callbacks { .onFileReady = bind(OnFileReady, ctx, placeholders::_1, placeholders::_2, placeholders::_3), diff --git a/tools/backup_tool/src/tools_op_restore.cpp b/tools/backup_tool/src/tools_op_restore.cpp index a7d09d45cf0b652323c29b01c0fe2f2bfe9c4c1f..a15bc799e6c7392f6f1a5e3aa4b931dd128a3e7d 100644 --- a/tools/backup_tool/src/tools_op_restore.cpp +++ b/tools/backup_tool/src/tools_op_restore.cpp @@ -280,7 +280,7 @@ static int32_t InitPathCapFile(const string &pathCapFile, vector bundleN auto ctx = make_shared(); size_t len = bundleNames.size(); for (size_t i = 0; i < len; ++i) { - ctx->fileNums_[bundleNames[i]] = ToolsOp::GetFIleNums(bundleNames[i]); + ctx->fileNums_[bundleNames[i]] = ToolsOp::GetFileNums(bundleNames[i]); } int32_t ret = InitRestoreSession(ctx); if (ret != 0) { diff --git a/tools/backup_tool/src/tools_op_restore_async.cpp b/tools/backup_tool/src/tools_op_restore_async.cpp index c7153af7ed69f1ba2a8ca307f15db8cd617c1f67..80042b78c80162e4ddded4889573b9380f8582f5 100644 --- a/tools/backup_tool/src/tools_op_restore_async.cpp +++ b/tools/backup_tool/src/tools_op_restore_async.cpp @@ -356,7 +356,7 @@ static int32_t InitArg(const string &pathCapFile, auto ctx = make_shared(); size_t len = bundleNames.size(); for (size_t i = 0; i < len; ++i) { - ctx->fileNums_[bundleNames[i]] = ToolsOp::GetFIleNums(bundleNames[i]); + ctx->fileNums_[bundleNames[i]] = ToolsOp::GetFileNums(bundleNames[i]); } ctx->session_ = BSessionRestoreAsync::Init(BSessionRestoreAsync::Callbacks { .onFileReady = bind(OnFileReady, ctx, placeholders::_1, placeholders::_2),