Unfortunately none of the thousands of users in the community have dug in and provided a patch to this common problem. The code is there that is suppose to restore the astdb objects which cause the problem, I’m not sure why it is not getting executed because if you run the pieces separately it all works. I noticed there were some errors but I don’t think any of them should have been causing the problem but feel free to try these out (always make backups first) and report back if it does in fact help:
/var/www/html/admin/modules/backup/bin/restoreastdb.php
Index: restoreastdb.php
===================================================================
--- restoreastdb.php (revision 5598)
+++ restoreastdb.php (working copy)
@@ -4,6 +4,19 @@
global $argv;
+// Astdb trees that should be deleted before the restore
+//
+$deltree = array(
+ 'AMPUSER',
+ 'DEVICE',
+ 'CF',
+ 'CFB',
+ 'CFU',
+ 'CW',
+ 'DND',
+ 'DAYNIGHT',
+);
+
function getconf($filename) {
$file = file($filename);
foreach ($file as $line) {
@@ -27,8 +40,15 @@
// You must supply a single filename, which will be written to /tmp
exit;
}
-$dump = file_get_contents("/tmp/ampbackups.$argv[1]/astdb.dump");
+$dump = file_get_contents("/tmp/ampbackups.".$argv[1]."/astdb.dump");
$arr = explode("\n", $dump);
+
+// Before restoring, let's clear out all of the current settings for the main objects
+//
+foreach ($deltree as $family) {
+ $astman->database_deltree($family);
+}
+
foreach ($arr as $line) {
$result = preg_match("/\[(.+)\] \[(.+)\]/", $line, $matches);
/ Now, the bad ones we know about are the ones that start with //, anything starting with SIP or IAX,
/var/www/html/admin/modules/backup/schedule_functions.php
Index: schedule_functions.php
===================================================================
--- schedule_functions.php (revision 5598)
+++ schedule_functions.php (working copy)
@@ -16,6 +16,7 @@
{
global $type;
global $asterisk_conf;
+ global $amp_conf;
if (is_dir($dir)) {
if (($file!=".") && ($file!="..") && ($file!="")){
echo "<li><a class=\"info\" href=\"javascript:decision('Are you sure you want to delete this File Set?','config.php?type=$type&display=$display&action=delete
dataset&dir=$dir')\">";
@@ -25,7 +26,7 @@
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false)
{
- if (($file!=".") && ($file!="..") && ($dir==$asterisk_conf['astvarlibdir']."/backups/"))
+ if (($file!=".") && ($file!="..") && ($dir==$amp_conf['ASTVARLIBDIR']."/backups/"))
echo "<li><a href=\"config.php?type=$type&display=$display&action=restore&dir=$dir/$file\">$file</a><br></li>";
else if (($file!=".") && ($file!="..") )
echo "<li><a href=\"config.php?type=$type&display=$display&action=restore&dir=$dir/$file&file=$file\">$file</a><br></li>";
@@ -82,11 +83,11 @@
if($filetype=="ALL") {
$Message="Restored All Files in BackupSet";
$fileholder=substr($file, 0,-7);
- exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
+ exec("/bin/rm -rf /tmp/ampbackups.$fileholder");
// First restore voicemial (for some reason if you do it all at once these don't get restored
//
- exec('/bin/rm -rf '.$asterisk_conf['astspooldir'].'/voicemail');
+ exec('/bin/rm -rf '.$amp_conf['ASTSPOOLDIR'].'/voicemail');
$tar_cmd="tar -PxvOz -f \"$dir\" /tmp/ampbackups.$fileholder/voicemail.tar.gz | tar -Pxvz";
exec($tar_cmd);
@@ -104,57 +105,57 @@
$tar_cmd="tar -Pxvz -f \"$dir\" /tmp/ampbackups.$fileholder/asterisk.sql /tmp/ampbackups.$fileholder/asteriskcdr.sql /tmp/ampbackups.$fileholder/astdb.dump";
exec($tar_cmd);
- $sql_cmd="mysql -u $amp_conf[AMPDBUSER] -p$amp_conf[AMPDBPASS] < /tmp/ampbackups.$fileholder/asterisk.sql";
+ $sql_cmd="mysql -u ".$amp_conf['AMPDBUSER']." -p".$amp_conf['AMPDBPASS']." < /tmp/ampbackups.$fileholder/asterisk.sql";
exec($sql_cmd);
- $sql_cmd="mysql -u $amp_conf[AMPDBUSER] -p$amp_conf[AMPDBPASS] < /tmp/ampbackups.$fileholder/asteriskcdr.sql";
+ $sql_cmd="mysql -u ".$amp_conf['AMPDBUSER']." -p".$amp_conf['AMPDBPASS']." < /tmp/ampbackups.$fileholder/asteriskcdr.sql";
exec($sql_cmd);
- exec($asterisk_conf['astvarlibdir']."/bin/restoreastdb.php $fileholder");
- exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
+ exec($amp_conf['AMPBIN']."/restoreastdb.php $fileholder");
+ exec("/bin/rm -rf /tmp/ampbackups.$fileholder");
} else if($filetype=="VoiceMail") {
$Message="Restored VoiceMail";
$fileholder=substr($file, 0,-7);
- exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
- exec('/bin/rm -rf '.$asterisk_conf['astspooldir'].'/voicemail');
+ exec("/bin/rm -rf /tmp/ampbackups.$fileholder");
+ exec('/bin/rm -rf '.$amp_conf['ASTSPOOLDIR'].'/voicemail');
$tar_cmd="tar -PxvOz -f \"$dir\" /tmp/ampbackups.$fileholder/voicemail.tar.gz | tar -Pxvz";
exec($tar_cmd);
exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
} else if($filetype=="Recordings") {
$Message="Restored System Recordings";
$fileholder=substr($file, 0,-7);
- exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
+ exec("/bin/rm -rf /tmp/ampbackups.$fileholder");
$tar_cmd="tar -PxvOz -f \"$dir\" /tmp/ampbackups.$fileholder/recordings.tar.gz | tar -Pxvz";
exec($tar_cmd);
- exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
+ exec("/bin/rm -rf /tmp/ampbackups.$fileholder");
} else if($filetype=="Configurations"){
$Message="Restored System Configuration";
$fileholder=substr($file, 0,-7);
- exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
+ exec("/bin/rm -rf /tmp/ampbackups.$fileholder");
$tar_cmd="tar -PxvOz -f \"$dir\" /tmp/ampbackups.$fileholder/configurations.tar.gz | tar -Pxvz";
exec($tar_cmd);
$tar_cmd="tar -Pxvz -f \"$dir\" /tmp/ampbackups.$fileholder/asterisk.sql /tmp/ampbackups.$fileholder/astdb.dump";
exec($tar_cmd);
- $sql_cmd="mysql -u $amp_conf[AMPDBUSER] -p$amp_conf[AMPDBPASS] < /tmp/ampbackups.$fileholder/asterisk.sql";
+ $sql_cmd="mysql -u ".$amp_conf['AMPDBUSER']." -p".$amp_conf['AMPDBPASS']." < /tmp/ampbackups.$fileholder/asterisk.sql";
exec($sql_cmd);
- exec($asterisk_conf['astvarlibdir']."/bin/restoreastdb.php $fileholder");
- exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
+ exec($amp_conf['AMPBIN']."/restoreastdb.php $fileholder");
+ exec("/bin/rm -rf /tmp/ampbackups.$fileholder");
} else if($filetype=="FOP"){
$Message="Restored Operator Panel";
$fileholder=substr($file, 0,-7);
- exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
+ exec("/bin/rm -rf /tmp/ampbackups.$fileholder");
$tar_cmd="tar -PxvOz -f \"$dir\" /tmp/ampbackups.$fileholder/fop.tar.gz | tar -Pxvz";
exec($tar_cmd);
- exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
+ exec("/bin/rm -rf /tmp/ampbackups.$fileholder");
} else if($filetype=="CDR"){
$Message="Restored CDR logs";
$fileholder=substr($file, 0,-7);
- exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
+ exec("/bin/rm -rf /tmp/ampbackups.$fileholder");
$tar_cmd="tar -PxvOz -f \"$dir\" /tmp/ampbackups.$fileholder/cdr.tar.gz | tar -Pxvz";
exec($tar_cmd);
$tar_cmd="tar -Pxvz -f \"$dir\" /tmp/ampbackups.$fileholder/asteriskcdr.sql";
exec($tar_cmd);
- $sql_cmd="mysql -u $amp_conf[AMPDBUSER] -p$amp_conf[AMPDBPASS] < /tmp/ampbackups.$fileholder/asteriskcdr.sql";
+ $sql_cmd="mysql -u ".$amp_conf['AMPDBUSER']." -p".$amp_conf['AMPDBPASS']." < /tmp/ampbackups.$fileholder/asteriskcdr.sql";
exec($sql_cmd);
- exec('/bin/rm -rf /tmp/ampbackups.$fileholder');
+ exec("/bin/rm -rf /tmp/ampbackups.$fileholder");
}
return ($Message);
}