[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] sqlite_backup.pl: Create backup of DB using locks to avoid problems with queuerunner.
--- config/emesinae.conf | 3 +++ config/examples/test/emesinae.conf | 3 +++ scripts/sqlite_backup.pl | 39 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100755 scripts/sqlite_backup.pl diff --git a/config/emesinae.conf b/config/emesinae.conf index 0aa1b3f..dd58c94 100644 --- a/config/emesinae.conf +++ b/config/emesinae.conf @@ -76,3 +76,6 @@ $c{ControlBlacklistPath} = "/etc/emesinae/control.blacklist"; # Severity levels, in decending order of criticality @{ $c{SeverityLevels} } = qw/blocker critical normal wishlist/; $c{DefaultSeverity} = "normal"; + +# Backup configuration +$c{BackupDir} = "/var/backups/"; diff --git a/config/examples/test/emesinae.conf b/config/examples/test/emesinae.conf index 528dcb6..11e4fad 100644 --- a/config/examples/test/emesinae.conf +++ b/config/examples/test/emesinae.conf @@ -70,3 +70,6 @@ $c{ControlBlacklistPath} = "/srv/test/etc/control.blacklist"; # Severity levels, in decending order of criticality @{ $c{SeverityLevels} } = qw/blocker critical normal wishlist/; $c{DefaultSeverity} = "normal"; + +# Backup configuration +$c{BackupDir} = "/srv/test/var/backups/"; diff --git a/scripts/sqlite_backup.pl b/scripts/sqlite_backup.pl new file mode 100755 index 0000000..557bc59 --- /dev/null +++ b/scripts/sqlite_backup.pl @@ -0,0 +1,39 @@ +#!/usr/bin/perl +# +# Creates a backup of the current DB in $c{BackupDir} +# using locks to avoid race conditions with queuerunner + +use strict; +use warnings; + +use Emesinae::Common; +use Emesinae::Paths; +use File::Copy; +use File::Basename; + +readconfig(); + +chdir( $c{BackupDir} ) || die("chdir to dir $c{BackupDir}: $!"); + + +my $lock = subsyslock('queuerunner'); + +my $BackupDB = $c{BackupDir} . basename($c{DB}); +my $BackupDBxz = $c{BackupDir} . basename($c{DB}) . ".xz"; +my $OldBackupDBxz = $c{BackupDir} . basename($c{DB}) . ".old.xz"; + +if ( -f $BackupDBxz ) { + move($BackupDBxz, $OldBackupDBxz) or die ("move failed: $!"); +} + +my $dbh = DBI->connect("dbi:SQLite:dbname=$c{DB}","",""); +$dbh->sqlite_backup_to_file( $BackupDB ); +undef $dbh; + +my @args = ("xz", "$BackupDB"); +system(@args) == 0 + or die ("xz compress failed: $?"); + +subsysunlock($lock); + +exit(0) -- 1.8.3.2 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |