Add database dump action to menu

This commit is contained in:
2026-08-31 21:52:44 +02:00
parent a769f53472
commit 1784f084b6
+44
View File
@@ -11,6 +11,7 @@ use Util;
use Mars;
use TUI;
use Filters;
use File::Temp;
use Text::CSV_XS;
use feature 'say';
@@ -29,6 +30,7 @@ my $local_archive_dir = "$local_root/injections";
my $local_charts_dir = "$local_root/scripts/charts";
my $local_ghidra_projects = "$local_root/ghidra";
my $local_ghidra_scripts = "$local_root/scripts/ghidra";
my $local_dump_dir = "$local_root/dumps";
my $local_db_conf = "$local_root/db.conf";
my $resultbrowser_port = '5000';
@@ -773,6 +775,48 @@ my %handlers = (
}
},
'31. Dump Database (Mars)' => sub {
# Dump databases from mars into $local_dump_dir
my @dbs = Mars::db_list();
my @dbs_with_notes;
foreach my $db (@dbs) {
my $info =
Util::read_experiment_info( $db =~ s/smchurla_//r =~ s/:/-/gr );
push @dbs_with_notes,
( defined $info && length($info) > 0 )
? sprintf( "%-60s (%s)", $db, $info )
: $db;
}
my @selected_dbs =
TUI::select_from_list( "Select Databases to Dump from Mars",
1, @dbs_with_notes );
die "No database selected" unless @selected_dbs;
@selected_dbs =
map { s/(.*?)\s+\(.+\)$/$1/r } @selected_dbs;
system( 'mkdir', '-p', $local_dump_dir );
# Mariadb complains about the database= line, so strip it out
my ( $dump_conf_handle, $dump_conf ) =
File::Temp::tempfile( 'db-dump-XXXXXX', TMPDIR => 1, UNLINK => 1 );
print $dump_conf_handle
grep { !/^\s*database\s*=/ } split /^/,
Util::read_file($local_db_conf);
close($dump_conf_handle) or die "failed to close $dump_conf: $!";
foreach my $db (@selected_dbs) {
my $dump_file = "$local_dump_dir/" . $db =~ s/:/-/gr . ".sql";
say "Dumping $db to $dump_file...";
Util::run( 'mariadb-dump', "--defaults-file=$dump_conf",
"--result-file=$dump_file", $db );
}
},
'95. Delete Builds' => sub {
# Delete old build files