Merge branch 'main' into fix-restore-too-many-databases

This commit is contained in:
Dan Helfman
2025-12-24 10:43:10 -08:00
3 changed files with 11 additions and 9 deletions
+1
View File
@@ -1,6 +1,7 @@
2.0.14.dev0
* #1208: Fix for the database "restore" action restoring more databases than the "--database" flag
specifies.
* #1212: Fix an error when restoring multiple directory-format database dumps at once.
2.0.13
* #1054: Allow the Btrfs hook to create and delete snapshots even when running
+9 -9
View File
@@ -129,14 +129,14 @@ def get_configured_data_source(config, restore_dump):
def strip_path_prefix_from_extracted_dump_destination(
destination_path,
extract_path,
borgmatic_runtime_directory,
):
'''
Directory-format dump files get extracted into a temporary directory containing a path prefix
that depends how the files were stored in the archive. So, given the destination path where the
dump was extracted and the borgmatic runtime directory, move the dump files such that the
restore doesn't have to deal with that varying path prefix.
that depends how the files were stored in the archive. So, given the path where the dump was
extracted and the borgmatic runtime directory, move the dump files such that the restore doesn't
have to deal with that varying path prefix.
For instance, if the dump was extracted to:
@@ -150,16 +150,16 @@ def strip_path_prefix_from_extracted_dump_destination(
/run/user/0/borgmatic/postgresql_databases/test/...
'''
for subdirectory_path, _, _ in os.walk(destination_path):
for subdirectory_path, _, _ in os.walk(extract_path):
databases_directory = os.path.basename(subdirectory_path)
if not databases_directory.endswith('_databases'):
continue
shutil.move(
subdirectory_path,
os.path.join(borgmatic_runtime_directory, databases_directory),
)
destination_path = os.path.join(borgmatic_runtime_directory, databases_directory)
shutil.rmtree(destination_path, ignore_errors=True)
shutil.move(subdirectory_path, destination_path)
break
+1
View File
@@ -295,6 +295,7 @@ def test_strip_path_prefix_from_extracted_dump_destination_renames_first_matchin
],
)
flexmock(module.shutil).should_receive('rmtree')
flexmock(module.shutil).should_receive('move').with_args(
'/foo/bar/postgresql_databases',
'/run/user/0/borgmatic/postgresql_databases',