From 81351faae3ef0011709ed73f12460097b963ab56 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 6 Apr 2025 10:35:08 +0200 Subject: [PATCH] pbackup: Support PBACKUP_DB development Add code to override the sqlite database name via environment variable. This can help in development, so that code can be tested against a copy of a real database as an unpriviledged user while avoiding the risk to block the running server or corrupte the backup data. --- bin/pbackup | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/bin/pbackup b/bin/pbackup index 47e0500..ad3c881 100755 --- a/bin/pbackup +++ b/bin/pbackup @@ -150,8 +150,20 @@ sub scan_rsync_log { our $dbh; +sub get_db_filename { + my $db_filename; + if (exists $ENV{'PBACKUP_DB'}) { + $db_filename = $ENV{'PBACKUP_DB'}; + -e $db_filename or die "$db_filename: no such file\n"; + } else { + $db_filename = "$ROOT/db/pbackup.db"; + } + return $db_filename; +} + sub db_open { - $dbh=DBI->connect("dbi:SQLite:dbname=$ROOT/db/pbackup.db","","",{ + my $db_filename = get_db_filename();; + $dbh=DBI->connect("dbi:SQLite:dbname=$db_filename","","",{ AutoCommit=>1, PrintError=>0, RaiseError=>1, @@ -1791,7 +1803,8 @@ if ($cmd eq 'status') { } elsif ($cmd eq 'fix_stat') { cmd_fix_stat(); } elsif ($cmd eq 'sql') { - system('sqlite3','-header',"$ROOT/db/pbackup.db",@ARGV); + my $db_filename = get_db_filename(); + system('sqlite3', '-header', $db_filename, @ARGV); } elsif ($cmd eq 'expire') { cmd_expire(); } elsif ($cmd eq 'kill') {