diff --git a/native/android/app/src/cpp/PlatformSpecificTools.cpp b/native/android/app/src/cpp/PlatformSpecificTools.cpp
--- a/native/android/app/src/cpp/PlatformSpecificTools.cpp
+++ b/native/android/app/src/cpp/PlatformSpecificTools.cpp
@@ -47,6 +47,24 @@
     return method(cls, backupID, isAttachments)->toStdString();
   }
 
+  static std::string getBackupLogFilePath(
+      std::string backupID,
+      std::string logID,
+      bool isAttachments) {
+    static const auto cls = javaClassStatic();
+    static auto method =
+        cls->getStaticMethod<JString(std::string, std::string, bool)>(
+            "getBackupLogFilePath");
+    return method(cls, backupID, logID, isAttachments)->toStdString();
+  }
+
+  static std::string getBackupUserKeysFilePath(std::string backupID) {
+    static const auto cls = javaClassStatic();
+    static auto method =
+        cls->getStaticMethod<JString(std::string)>("getBackupUserKeysFilePath");
+    return method(cls, backupID)->toStdString();
+  }
+
   static void removeBackupDirectory() {
     static const auto cls = javaClassStatic();
     static auto method = cls->getStaticMethod<void()>("removeBackupDirectory");
@@ -95,6 +113,28 @@
   return path;
 }
 
+std::string PlatformSpecificTools::getBackupLogFilePath(
+    std::string backupID,
+    std::string logID,
+    bool isAttachments) {
+  std::string path;
+  NativeAndroidAccessProvider::runTask(
+      [&path, backupID, logID, isAttachments]() {
+        path = PlatformSpecificToolsJavaClass::getBackupLogFilePath(
+            backupID, logID, isAttachments);
+      });
+  return path;
+}
+
+std::string
+PlatformSpecificTools::getBackupUserKeysFilePath(std::string backupID) {
+  std::string path;
+  NativeAndroidAccessProvider::runTask([&path, backupID]() {
+    path = PlatformSpecificToolsJavaClass::getBackupUserKeysFilePath(backupID);
+  });
+  return path;
+}
+
 void PlatformSpecificTools::removeBackupDirectory() {
   NativeAndroidAccessProvider::runTask(
       []() { PlatformSpecificToolsJavaClass::removeBackupDirectory(); });
diff --git a/native/android/app/src/main/java/app/comm/android/fbjni/PlatformSpecificTools.java b/native/android/app/src/main/java/app/comm/android/fbjni/PlatformSpecificTools.java
--- a/native/android/app/src/main/java/app/comm/android/fbjni/PlatformSpecificTools.java
+++ b/native/android/app/src/main/java/app/comm/android/fbjni/PlatformSpecificTools.java
@@ -67,6 +67,26 @@
     return String.join(File.separator, backupDirPath, filename);
   }
 
+  public static String
+  getBackupLogFilePath(String backupID, String logID, boolean isAttachments) {
+    String backupDirPath = PlatformSpecificTools.getBackupDirectoryPath();
+
+    String filename;
+    if (isAttachments) {
+      filename =
+          String.join("-", "backup", backupID, "log", logID, "attachments");
+    } else {
+      filename = String.join("-", "backup", backupID, "log", logID);
+    }
+    return String.join(File.separator, backupDirPath, filename);
+  }
+
+  public static String getBackupUserKeysFilePath(String backupID) {
+    String backupDirPath = PlatformSpecificTools.getBackupDirectoryPath();
+    String filename = String.join("-", "backup", backupID, "userkeys");
+    return String.join(File.separator, backupDirPath, filename);
+  }
+
   public static void removeBackupDirectory() {
     String backupDirPath = PlatformSpecificTools.getBackupDirectoryPath();
     try {
diff --git a/native/cpp/CommonCpp/Tools/PlatformSpecificTools.h b/native/cpp/CommonCpp/Tools/PlatformSpecificTools.h
--- a/native/cpp/CommonCpp/Tools/PlatformSpecificTools.h
+++ b/native/cpp/CommonCpp/Tools/PlatformSpecificTools.h
@@ -12,6 +12,11 @@
   static std::string getBackupDirectoryPath();
   static std::string
   getBackupFilePath(std::string backupID, bool isAttachments);
+  static std::string getBackupLogFilePath(
+      std::string backupID,
+      std::string logID,
+      bool isAttachments);
+  static std::string getBackupUserKeysFilePath(std::string backupID);
   static void removeBackupDirectory();
 };
 
diff --git a/native/ios/Comm/PlatformSpecificTools.mm b/native/ios/Comm/PlatformSpecificTools.mm
--- a/native/ios/Comm/PlatformSpecificTools.mm
+++ b/native/ios/Comm/PlatformSpecificTools.mm
@@ -90,6 +90,38 @@
   return [[backupDir URLByAppendingPathComponent:filename].path UTF8String];
 }
 
+std::string PlatformSpecificTools::getBackupLogFilePath(
+    std::string backupID,
+    std::string logID,
+    bool isAttachments) {
+
+  NSURL *backupDir = getBackupDirAsURL();
+  NSString *backupIDObjC = [NSString stringWithCString:backupID.c_str()
+                                              encoding:NSUTF8StringEncoding];
+  NSString *logIDObjC = [NSString stringWithCString:logID.c_str()
+                                           encoding:NSUTF8StringEncoding];
+  NSString *filename;
+  if (isAttachments) {
+    filename = [@[ @"backup", backupIDObjC, @"log", logIDObjC, @"attachments" ]
+        componentsJoinedByString:@"-"];
+  } else {
+    filename = [@[ @"backup", backupIDObjC, @"log", logIDObjC ]
+        componentsJoinedByString:@"-"];
+  }
+  return [[backupDir URLByAppendingPathComponent:filename].path UTF8String];
+}
+
+std::string
+PlatformSpecificTools::getBackupUserKeysFilePath(std::string backupID) {
+
+  NSURL *backupDir = getBackupDirAsURL();
+  NSString *backupIDObjC = [NSString stringWithCString:backupID.c_str()
+                                              encoding:NSUTF8StringEncoding];
+  NSString *filename =
+      [@[ @"backup", backupIDObjC, @"userkeys" ] componentsJoinedByString:@"-"];
+  return [[backupDir URLByAppendingPathComponent:filename].path UTF8String];
+}
+
 void PlatformSpecificTools::removeBackupDirectory() {
   NSURL *backupDir = getBackupDirAsURL();
   if (![NSFileManager.defaultManager fileExistsAtPath:backupDir.path]) {
diff --git a/native/native_rust_library/RustBackupExecutor.h b/native/native_rust_library/RustBackupExecutor.h
--- a/native/native_rust_library/RustBackupExecutor.h
+++ b/native/native_rust_library/RustBackupExecutor.h
@@ -5,6 +5,9 @@
 namespace comm {
 
 rust::String getBackupDirectoryPath();
-rust::String getBackupFilePath(rust::String backupID, bool isAttachments);
+rust::String getBackupFilePath(rust::Str backupID, bool isAttachments);
+rust::String
+getBackupLogFilePath(rust::Str backupID, rust::Str logID, bool isAttachments);
+rust::String getBackupUserKeysFilePath(rust::Str backupID);
 
 } // namespace comm
diff --git a/native/native_rust_library/RustBackupExecutor.cpp b/native/native_rust_library/RustBackupExecutor.cpp
--- a/native/native_rust_library/RustBackupExecutor.cpp
+++ b/native/native_rust_library/RustBackupExecutor.cpp
@@ -9,8 +9,19 @@
   return rust::String(PlatformSpecificTools::getBackupDirectoryPath());
 }
 
-rust::String getBackupFilePath(rust::String backupID, bool isAttachments) {
+rust::String getBackupFilePath(rust::Str backupID, bool isAttachments) {
   return rust::String(PlatformSpecificTools::getBackupFilePath(
       std::string(backupID), isAttachments));
 }
+
+rust::String
+getBackupLogFilePath(rust::Str backupID, rust::Str logID, bool isAttachments) {
+  return rust::String(PlatformSpecificTools::getBackupLogFilePath(
+      std::string(backupID), std::string(logID), isAttachments));
+}
+
+rust::String getBackupUserKeysFilePath(rust::Str backupID) {
+  return rust::String(
+      PlatformSpecificTools::getBackupUserKeysFilePath(std::string(backupID)));
+}
 } // namespace comm
diff --git a/native/native_rust_library/src/lib.rs b/native/native_rust_library/src/lib.rs
--- a/native/native_rust_library/src/lib.rs
+++ b/native/native_rust_library/src/lib.rs
@@ -279,9 +279,21 @@
     #[allow(unused)]
     #[cxx_name = "getBackupFilePath"]
     fn get_backup_file_path(
-      backup_id: String,
+      backup_id: &str,
       is_attachments: bool,
     ) -> Result<String>;
+
+    #[allow(unused)]
+    #[cxx_name = "getBackupLogFilePath"]
+    fn get_backup_log_file_path(
+      backup_id: &str,
+      log_id: &str,
+      is_attachments: bool,
+    ) -> Result<String>;
+
+    #[allow(unused)]
+    #[cxx_name = "getBackupUserKeysFilePath"]
+    fn get_backup_user_keys_file_path(backup_id: &str) -> Result<String>;
   }
 }