X-Git-Url: http://git.pjr.cc/?p=php-bacula-disk-changer.git;a=blobdiff_plain;f=bin%2Fpbdc-bacula.php;h=5a365262c55ab90bb586ebe50958c3652c213e84;hp=5225d4915484155259b7f86e02055b39810da9e7;hb=95682a89442421c2ae8bfbf729c255c993874d7c;hpb=0f654013ad6f1ce818f875cbe70a8f0e802abbc4 diff --git a/bin/pbdc-bacula.php b/bin/pbdc-bacula.php index 5225d49..5a36526 100644 --- a/bin/pbdc-bacula.php +++ b/bin/pbdc-bacula.php @@ -54,7 +54,7 @@ function unload_tape() $changer = $argv[1]; $taped = $argv[5]; - unlink("$tapeloc/$changer-drive$taped"); + if(file_exists("$tapeloc/$changer-drive$taped")) unlink("$tapeloc/$changer-drive$taped"); } function load_tape() @@ -74,29 +74,20 @@ function load_tape() $ret = false; $slot = $argv[3]; - $i=1; + + $res = $db->query("select disk_id,tape_name from slots where slot_no=='$slot'"); foreach($res as $row) { - //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n"; - //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n"; - //exit(0); - $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/"); - while(($file = readdir($dh)) !== false) { - if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) { - if($i == $slot) { - unlink("$tapeloc/$changer-drive$taped"); - symlink("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/$file", "$tapeloc/$changer-drive$taped"); - exit(0); - } - $i++; - } else { - //echo "didnt match: $file\n"; - } - //exit(0); - } - closedir($dh); + $did = $row["disk_id"]; + $file = $row["tape_name"]; } - echo "0\n"; + $res = $db->query("select disk_name from disk_list where disk_id=='$did'"); + foreach($res as $row) { + $diskname = $row["disk_name"]; + } + + if(file_exists("$tapeloc/$changer-drive$taped")) unlink("$tapeloc/$changer-drive$taped"); + symlink("$amloc/".$diskname."/pbdc/".$argv[1]."/tapes/$file", "$tapeloc/$changer-drive$taped"); } @@ -155,27 +146,28 @@ function list_tapes() $db = db_getDB($argv[1]); - $res = $db->query("select * from disk_list order by disk_id"); + $res = $db->query("select * from slots order by slot_no"); $amloc = conf_getVal($changer, "automountdir"); - $ret = false; - $i=1; foreach($res as $row) { //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n"; //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n"; //exit(0); - $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/"); - while(($file = readdir($dh)) !== false) { - if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) { - echo "slot $i: $file\n"; - $i++; - } else { - //echo "didnt match: $file\n"; - } - //exit(0); + $tapename = $row["tape_name"]; + $did = $row["disk_id"]; + $sn = $row["slot_no"]; + $res2 = $db->query("select disk_name from disk_list where disk_id=='$did'"); + $dn = ""; + foreach($res2 as $row2) { + $dn = $row2[0]; + } + $tn = "$amloc/".$dn."/pbdc/".$argv[1]."/tapes/$tapename"; + if(file_exists($tn)) { + echo "slot $sn: $tapename\n"; + } else { + echo "slot $sn:\n"; } - closedir($dh); } } @@ -188,30 +180,36 @@ function num_slots() $db = db_getDB($argv[1]); - $res = $db->query("select * from disk_list order by disk_id"); - - $amloc = conf_getVal($changer, "automountdir"); + $res = $db->query("select max(slot_no) from slots"); - $ret = false; - $i=1; foreach($res as $row) { - //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n"; - //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n"; - //exit(0); - $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/"); - while(($file = readdir($dh)) !== false) { - if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) { - $i++; - } else { - //echo "didnt match: $file\n"; - } - //exit(0); - } - closedir($dh); + $mslot = $row[0]; } - $i--; - echo "$i\n"; + return $mslot; + +// $amloc = conf_getVal($changer, "automountdir"); + +// $ret = false; +// $i=1; +// foreach($res as $row) { +// //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n"; +// //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n"; +// //exit(0); +// $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/"); +// while(($file = readdir($dh)) !== false) { +// if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) { +// $i++; +// } else { +// //echo "didnt match: $file\n"; +// } +// //exit(0); +// } +// closedir($dh); +// } +// $i--; + +// echo "$i\n"; }