--- /dev/null
+#!/bin/sh
+#
+# Shell script to update MySQL tables from version 1.22 to 1.23
+#
+echo " "
+echo "This script will update a bacula database from version 4 to 5."
+echo "Depending on the size of your database,"
+echo "this script may take several minutes to run."
+echo " "
+
+# the location of the mysql program
+bindir=/usr/bin
+
+DB_VER=`$bindir/mysql bacula -e 'select * from Version;'|tail -n 1 2>/dev/null`
+if [ -z "$DB_VER" ]; then
+ echo "Sorry, I can't seem to locate a bacula database."
+ exit 1
+fi
+
+if [ -n "$DB_VER" ] && [ "$DB_VER" -ne "4" ]; then
+ echo "Sorry, this script is designed to update a version 4 database"
+ echo "and you have a version $DB_VER database."
+ exit 1
+fi
+
+if $bindir/mysql -f <<END-OF-DATA
+USE bacula;
+ALTER TABLE Media ADD COLUMN VolUseDuration BIGINT UNSIGNED NOT NULL;
+ALTER TABLE Media ADD COLUMN MaxVolJobs INTEGER UNSIGNED NOT NULL;
+ALTER TABLE Media ADD COLUMN MaxVolFiles INTEGER UNSIGNED NOT NULL;
+ALTER TABLE Pool ADD COLUMN VolUseDuration BIGINT UNSIGNED NOT NULL;
+ALTER TABLE Pool ADD COLUMN MaxVolJobs INTEGER UNSIGNED NOT NULL;
+ALTER TABLE Pool ADD COLUMN MaxVolFiles INTEGER UNSIGNED NOT NULL;
+ALTER TABLE Pool ADD COLUMN MaxVolBytes BIGINT UNSIGNED NOT NULL;
+ALTER TABLE Media MODIFY VolStatus ENUM('Full', 'Archive', 'Append',
+ 'Recycle', 'Purged', 'Read-Only', 'Disabled', 'Error',
+ 'Busy', 'Used') NOT NULL;
+ALTER TABLE Media CHANGE VolMaxBytes MaxVolBytes BIGINT UNSIGNED NOT NULL;
+
+UPDATE Version SET VersionId=5;
+
+END-OF-DATA
+then
+ echo "Update of Bacula tables succeeded."
+else
+ echo "Update of Bacula tables failed."
+fi
+exit 0
--- /dev/null
+#!/bin/sh
+#
+# Shell script to update MySQL tables from version 1.29 to 1.30
+#
+echo " "
+echo "This script will update a bacula database from version 5 to 6."
+echo "Depending on the size of your database,"
+echo "this script may take several minutes to run."
+echo " "
+
+# the location of the mysql program
+bindir=/usr/bin
+
+DB_VER=`$bindir/mysql bacula -e 'select * from Version;'|tail -n 1 2>/dev/null`
+if [ -z "$DB_VER" ]; then
+ echo "Sorry, I can't seem to locate a bacula database."
+ exit 1
+fi
+
+if [ -n "$DB_VER" ] && [ "$DB_VER" -ne "5" ]; then
+ echo "Sorry, this script is designed to update a version 5 database"
+ echo "and you have a version $DB_VER database."
+ exit 1
+fi
+
+if $bindir/mysql $* -f <<END-OF-DATA
+USE bacula;
+
+ALTER TABLE JobMedia ADD COLUMN VolIndex INTEGER UNSIGNED NOT NULL;
+
+ALTER TABLE Job ADD COLUMN HasBase TINYINT DEFAULT 0;
+
+CREATE TABLE FileSet_backup (
+ FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+ FileSet TINYBLOB NOT NULL,
+ MD5 TINYBLOB NOT NULL,
+ PRIMARY KEY(FileSetId)
+ );
+INSERT INTO FileSet_backup SELECT * From FileSet;
+
+DROP TABLE FileSet;
+
+CREATE TABLE FileSet (
+ FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+ FileSet TINYBLOB NOT NULL,
+ MD5 TINYBLOB NOT NULL,
+ CreateTime DATETIME NOT NULL,
+ PRIMARY KEY(FileSetId)
+ );
+
+INSERT INTO FileSet (
+ FileSetId, FileSet, MD5, CreateTime)
+ SELECT FileSet_backup.FileSetId,FileSet,MD5,StartTime as CreateTime
+ FROM FileSet_backup,Job
+ WHERE FileSet_backup.FileSetId=Job.FileSetId
+ GROUP by FileSet_backup.FileSetId
+ ORDER BY Job.FileSetId;
+
+DROP TABLE FileSet_backup;
+
+
+CREATE TABLE BaseFiles (
+ BaseId INTEGER UNSIGNED AUTO_INCREMENT,
+ JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
+ FileId INTEGER UNSIGNED NOT NULL REFERENCES File,
+ FileIndex INTEGER UNSIGNED,
+ PRIMARY KEY(BaseId)
+ );
+
+CREATE TABLE UnsavedFiles (
+ UnsavedId INTEGER UNSIGNED AUTO_INCREMENT,
+ JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
+ PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
+ FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
+ PRIMARY KEY (UnsavedId)
+ );
+
+DROP TABLE Counters;
+
+CREATE TABLE Counters (
+ Counter TINYBLOB NOT NULL,
+ MinValue INTEGER,
+ MaxValue INTEGER,
+ CurrentValue INTEGER,
+ WrapCounter TINYBLOB NOT NULL,
+ PRIMARY KEY (Counter(128))
+ );
+
+UPDATE Version SET VersionId=6;
+
+END-OF-DATA
+then
+ echo "Update of Bacula MySQL tables succeeded."
+else
+ echo "Update of Bacula MySQL tables failed."
+fi
+exit 0
# the location of the mysql program
bindir=/usr/bin
+DB_VER=`$bindir/mysql bacula -e 'select * from Version;'|tail -n 1 2>/dev/null`
+if [ -z "$DB_VER" ]; then
+ echo "Sorry, I can't seem to locate a bacula database."
+ exit 1
+fi
+
+if [ -n "$DB_VER" ] && [ "$DB_VER" -ne "6" ]; then
+ echo "Sorry, this script is designed to update a version 6 database"
+ echo "and you have a version $DB_VER database."
+ exit 1
+fi
+
if $bindir/mysql $* -f <<END-OF-DATA
USE bacula;
--- /dev/null
+#!/bin/sh
+#
+# shell script to update SQLite from version 1.22 to 1.23
+#
+echo " "
+echo "This script will update a bacula database from version 4 to 5."
+echo "Depending on the size of your database,"
+echo "this script may take several minutes to run."
+echo " "
+
+# The location of the sqlite program
+bindir=/usr/lib/sqlite
+# The location of your bacula working directory
+cd /var/bacula
+
+if [ -s bacula.db ];then
+ DB_VER=`echo "select * from Version;" | $bindir/sqlite bacula.db | tail -n 1 2>/dev/null`
+ if [ -n "$DB_VER" ] && [ "$DB_VER" -ne "4" ]; then
+ echo "Sorry, this script is designed to update a version 4 database"
+ echo "and you have a version $DB_VER database."
+ exit 1
+ fi
+else
+ echo "Sorry, I can't seem to locate a bacula database."
+ exit 1
+fi
+
+$bindir/sqlite bacula.db <<END-OF-DATA
+
+BEGIN TRANSACTION;
+CREATE TEMPORARY TABLE Media_backup (
+ MediaId INTEGER UNSIGNED AUTOINCREMENT,
+ VolumeName VARCHAR(128) NOT NULL,
+ Slot INTEGER DEFAULT 0,
+ PoolId INTEGER UNSIGNED REFERENCES Pool NOT NULL,
+ MediaType VARCHAR(128) NOT NULL,
+ FirstWritten DATETIME DEFAULT 0,
+ LastWritten DATETIME DEFAULT 0,
+ LabelDate DATETIME DEFAULT 0,
+ VolJobs INTEGER UNSIGNED DEFAULT 0,
+ VolFiles INTEGER UNSIGNED DEFAULT 0,
+ VolBlocks INTEGER UNSIGNED DEFAULT 0,
+ VolMounts INTEGER UNSIGNED DEFAULT 0,
+ VolBytes BIGINT UNSIGNED DEFAULT 0,
+ VolErrors INTEGER UNSIGNED DEFAULT 0,
+ VolWrites INTEGER UNSIGNED DEFAULT 0,
+ VolMaxBytes BIGINT UNSIGNED DEFAULT 0,
+ VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
+ VolStatus VARCHAR(20) NOT NULL,
+ Recycle TINYINT DEFAULT 0,
+ VolRetention BIGINT UNSIGNED DEFAULT 0,
+ PRIMARY KEY(MediaId)
+ );
+INSERT INTO Media_backup SELECT * FROM Media;
+DROP TABLE Media;
+CREATE TABLE Media (
+ MediaId INTEGER UNSIGNED AUTOINCREMENT,
+ VolumeName VARCHAR(128) NOT NULL,
+ Slot INTEGER DEFAULT 0,
+ PoolId INTEGER UNSIGNED REFERENCES Pool NOT NULL,
+ MediaType VARCHAR(128) NOT NULL,
+ FirstWritten DATETIME DEFAULT 0,
+ LastWritten DATETIME DEFAULT 0,
+ LabelDate DATETIME DEFAULT 0,
+ VolJobs INTEGER UNSIGNED DEFAULT 0,
+ VolFiles INTEGER UNSIGNED DEFAULT 0,
+ VolBlocks INTEGER UNSIGNED DEFAULT 0,
+ VolMounts INTEGER UNSIGNED DEFAULT 0,
+ VolBytes BIGINT UNSIGNED DEFAULT 0,
+ VolErrors INTEGER UNSIGNED DEFAULT 0,
+ VolWrites INTEGER UNSIGNED DEFAULT 0,
+ MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+ VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
+ VolStatus VARCHAR(20) NOT NULL,
+ Recycle TINYINT DEFAULT 0,
+ VolRetention BIGINT UNSIGNED DEFAULT 0,
+ VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+ MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+ MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+ PRIMARY KEY(MediaId)
+ );
+INSERT INTO Media (
+ MediaId,VolumeName,Slot,PoolId,MediaType,
+ FirstWritten,LastWritten,LabelDate,
+ VolJobs,VolFiles,VolBlocks,VolMounts,
+ VolBytes,VolErrors,VolWrites,MaxVolBytes,
+ VolCapacityBytes,VolStatus,Recycle,
+ VolRetention)
+ SELECT * FROM Media_backup;
+DROP TABLE Media_backup;
+COMMIT;
+
+
+BEGIN TRANSACTION;
+CREATE TEMPORARY TABLE Pool_backup (
+ PoolId INTEGER UNSIGNED AUTOINCREMENT,
+ Name VARCHAR(128) NOT NULL,
+ NumVols INTEGER UNSIGNED DEFAULT 0,
+ MaxVols INTEGER UNSIGNED DEFAULT 0,
+ UseOnce TINYINT DEFAULT 0,
+ UseCatalog TINYINT DEFAULT 1,
+ AcceptAnyVolume TINYINT DEFAULT 0,
+ VolRetention BIGINT UNSIGNED DEFAULT 0,
+ AutoPrune TINYINT DEFAULT 0,
+ Recycle TINYINT DEFAULT 0,
+ PoolType VARCHAR(20) NOT NULL,
+ LabelFormat VARCHAR(128) NOT NULL,
+ UNIQUE (Name),
+ PRIMARY KEY (PoolId)
+ );
+INSERT INTO Pool_backup SELECT * FROM Pool;
+DROP TABLE Pool;
+CREATE TABLE Pool (
+ PoolId INTEGER UNSIGNED AUTOINCREMENT,
+ Name VARCHAR(128) NOT NULL,
+ NumVols INTEGER UNSIGNED DEFAULT 0,
+ MaxVols INTEGER UNSIGNED DEFAULT 0,
+ UseOnce TINYINT DEFAULT 0,
+ UseCatalog TINYINT DEFAULT 1,
+ AcceptAnyVolume TINYINT DEFAULT 0,
+ VolRetention BIGINT UNSIGNED DEFAULT 0,
+ VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+ MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+ MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+ MaxVolBytes INTEGER UNSIGNED DEFAULT 0,
+ AutoPrune TINYINT DEFAULT 0,
+ Recycle TINYINT DEFAULT 0,
+ PoolType VARCHAR(20) NOT NULL,
+ LabelFormat VARCHAR(128) NOT NULL,
+ UNIQUE (Name),
+ PRIMARY KEY (PoolId)
+ );
+
+INSERT INTO Pool (
+ PoolId,Name,NumVols,MaxVols,UseOnce,
+ UseCatalog,AcceptAnyVolume,VolRetention,
+ AutoPrune,Recycle,PoolType,LabelFormat
+ )
+ SELECT * FROM Pool_backup;
+DROP TABLE Pool_backup;
+COMMIT;
+
+UPDATE Version SET VersionId=5;
+
+END-OF-DATA
--- /dev/null
+#!/bin/sh
+#
+# shell script to update SQLite from version 1.29 to 1.30
+#
+echo " "
+echo "This script will update a bacula database from version 5 to 6."
+echo "Depending on the size of your database,"
+echo "this script may take several minutes to run."
+echo " "
+
+# The location of the sqlite program
+bindir=/usr/lib/sqlite
+# The location of your bacula working directory
+cd /var/bacula
+
+if [ -s bacula.db ];then
+ DB_VER=`echo "select * from Version;" | $bindir/sqlite bacula.db | tail -n 1 2>/dev/null`
+ if [ -n "$DB_VER" ] && [ "$DB_VER" -ne "5" ]; then
+ echo "Sorry, this script is designed to update a version 5 database"
+ echo "and you have a version $DB_VER database."
+ exit 1
+ fi
+else
+ echo "Sorry, I can't seem to locate a bacula database."
+ exit 1
+fi
+
+$bindir/sqlite $* bacula.db <<END-OF-DATA
+
+BEGIN TRANSACTION;
+CREATE TEMPORARY TABLE FileSet_backup (
+ FileSetId INTEGER UNSIGNED AUTOINCREMENT,
+ FileSet VARCHAR(128) NOT NULL,
+ MD5 VARCHAR(25) NOT NULL,
+ PRIMARY KEY(FileSetId)
+ );
+INSERT INTO FileSet_backup SELECT * From FileSet;
+
+DROP TABLE FileSet;
+CREATE TABLE FileSet (
+ FileSetId INTEGER UNSIGNED AUTOINCREMENT,
+ FileSet VARCHAR(128) NOT NULL,
+ MD5 VARCHAR(25) NOT NULL,
+ CreateTime DATETIME DEFAULT 0,
+ PRIMARY KEY(FileSetId)
+ );
+INSERT INTO FileSet (
+ FileSetId, FileSet, MD5, CreateTime)
+ SELECT FileSet_backup.FileSetId,FileSet,MD5,StartTime FROM FileSet_backup,Job
+ WHERE FileSet_backup.FileSetId=Job.FileSetId GROUP by FileSet_backup.FileSetId
+ ORDER BY Job.FileSetId;
+
+DROP TABLE FileSet_backup;
+COMMIT;
+
+
+BEGIN TRANSACTION;
+CREATE TEMPORARY TABLE Job_backup (
+ JobId INTEGER UNSIGNED NOT NULL,
+ Job VARCHAR(128) NOT NULL,
+ Name VARCHAR(128) NOT NULL,
+ PurgedFiles TINYINT DEFAULT 0,
+ Type CHAR NOT NULL,
+ Level CHAR NOT NULL,
+ ClientId INTEGER REFERENCES Client DEFAULT 0,
+ JobStatus CHAR NOT NULL,
+ SchedTime DATETIME NOT NULL,
+ StartTime DATETIME DEFAULT 0,
+ EndTime DATETIME DEFAULT 0,
+ JobTDate BIGINT UNSIGNED DEFAULT 0,
+ VolSessionId INTEGER UNSIGNED DEFAULT 0,
+ VolSessionTime INTEGER UNSIGNED DEFAULT 0,
+ JobFiles INTEGER UNSIGNED DEFAULT 0,
+ JobBytes BIGINT UNSIGNED DEFAULT 0,
+ JobErrors INTEGER UNSIGNED DEFAULT 0,
+ JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
+ PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+ FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0
+ );
+INSERT INTO Job_backup SELECT * From Job;
+
+DROP TABLE Job;
+CREATE TABLE Job (
+ JobId INTEGER UNSIGNED NOT NULL,
+ Job VARCHAR(128) NOT NULL,
+ Name VARCHAR(128) NOT NULL,
+ PurgedFiles TINYINT DEFAULT 0,
+ Type CHAR NOT NULL,
+ Level CHAR NOT NULL,
+ ClientId INTEGER REFERENCES Client DEFAULT 0,
+ JobStatus CHAR NOT NULL,
+ SchedTime DATETIME NOT NULL,
+ StartTime DATETIME DEFAULT 0,
+ EndTime DATETIME DEFAULT 0,
+ JobTDate BIGINT UNSIGNED DEFAULT 0,
+ VolSessionId INTEGER UNSIGNED DEFAULT 0,
+ VolSessionTime INTEGER UNSIGNED DEFAULT 0,
+ JobFiles INTEGER UNSIGNED DEFAULT 0,
+ JobBytes BIGINT UNSIGNED DEFAULT 0,
+ JobErrors INTEGER UNSIGNED DEFAULT 0,
+ JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
+ PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+ FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
+ HasBase TINYINT DEFAULT 0,
+ PRIMARY KEY(JobId)
+ );
+INSERT INTO Job (JobId,Job,Name,PurgedFiles,
+ Type,Level,ClientId,JobStatus,SchedTime,
+ StartTime,EndTime,JobTDate,VolSessionId,
+ VolSessionTime,JobFiles,JobBytes,JobErrors,
+ JobMissingFiles,PoolId,FileSetId)
+ SELECT * FROM Job_backup;
+DROP TABLE Job_backup;
+COMMIT;
+
+
+BEGIN TRANSACTION;
+CREATE TEMPORARY TABLE JobMedia_backup (
+ JobMediaId INTEGER UNSIGNED AUTOINCREMENT,
+ JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
+ MediaId INTEGER UNSIGNED REFERENCES Media NOT NULL,
+ FirstIndex INTEGER UNSIGNED NOT NULL,
+ LastIndex INTEGER UNSIGNED NOT NULL,
+ StartFile INTEGER UNSIGNED DEFAULT 0,
+ EndFile INTEGER UNSIGNED DEFAULT 0,
+ StartBlock INTEGER UNSIGNED DEFAULT 0,
+ EndBlock INTEGER UNSIGNED DEFAULT 0,
+ PRIMARY KEY(JobMediaId)
+ );
+INSERT INTO JobMedia_backup SELECT * From JobMedia;
+
+DROP TABLE JobMedia;
+CREATE TABLE JobMedia (
+ JobMediaId INTEGER UNSIGNED AUTOINCREMENT,
+ JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
+ MediaId INTEGER UNSIGNED REFERENCES Media NOT NULL,
+ FirstIndex INTEGER UNSIGNED NOT NULL,
+ LastIndex INTEGER UNSIGNED NOT NULL,
+ StartFile INTEGER UNSIGNED DEFAULT 0,
+ EndFile INTEGER UNSIGNED DEFAULT 0,
+ StartBlock INTEGER UNSIGNED DEFAULT 0,
+ EndBlock INTEGER UNSIGNED DEFAULT 0,
+ VolIndex INTEGER UNSIGNED DEFAULT 0,
+ PRIMARY KEY(JobMediaId)
+ );
+INSERT INTO JobMedia (
+ JobMediaId,JobId,MediaId,FirstIndex,
+ LastIndex,StartFile,EndFile,StartBlock,
+ EndBlock)
+ SELECT * FROM JobMedia_backup;
+DROP TABLE JobMedia_backup;
+COMMIT;
+
+CREATE TABLE BaseFiles (
+ BaseId INTEGER UNSIGNED AUTOINCREMENT,
+ JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
+ FileId INTEGER UNSIGNED REFERENCES File NOT NULL,
+ FileIndex INTEGER UNSIGNED,
+ PRIMARY KEY(BaseId)
+ );
+
+DROP TABLE Counters;
+
+CREATE TABLE Counters (
+ Counter TEXT NOT NULL,
+ MinValue INTEGER DEFAULT 0,
+ MaxValue INTEGER DEFAULT 0,
+ CurrentValue INTEGER DEFAULT 0,
+ WrapCounter TEXT NOT NULL,
+ PRIMARY KEY (Counter)
+ );
+
+UPDATE Version SET VersionId=6;
+
+END-OF-DATA
# The location of your bacula working directory
cd /var/bacula
+if [ -s bacula.db ];then
+ DB_VER=`echo "select * from Version;" | $bindir/sqlite bacula.db | tail -n 1 2>/dev/null`
+ if [ -n "$DB_VER" ] && [ "$DB_VER" -ne "6" ]; then
+ echo "Sorry, this script is designed to update a version 6 database"
+ echo "and you have a version $DB_VER database."
+ exit 1
+ fi
+else
+ echo "Sorry, I can't seem to locate a bacula database."
+ exit 1
+fi
+
$bindir/sqlite $* bacula.db <<END-OF-DATA
BEGIN TRANSACTION;