商用のバックアップソフトなどを使わないフリーソフトのみの構成.
- mtコマンドのためにmt-stパッケージをインストールする
- テープデバイスのデバイスファイルを確認する(ここでは/dev/nst0)
- mt -f /dev/nst0 statしてきちんとデバイス情報が取れるかを確認
- 以下のスクリプトを実行.TAPE_DEV, BACKUP_DIRは必要に応じて書き換える
#!/usr/local/bin/php
<?php
define('MT', '/bin/mt');
define('TAPE_DEV', '/dev/nst0');
define('BACKUP_DIR', '/home');
$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
);
$cwd = BACKUP_DIR;
$process = proc_open(MT.' -f '.TAPE_DEV.' stat', $descriptorspec, $pipes, $cwd);
$onlineFlag = false;
if (is_resource($process)) {
while($buff = fgets($pipes[1], 4096)){
if(strpos($buff, "ONLINE") !== false){
$onlineFlag = true;
}
}
if($onlineFlag){
ini_set('max_execution_time', 0);
system("tar zcf ".TAPE_DEV." ".BACKUP_DIR);
system(MT." -f ".TAPE_DEV.' eject');
}
$return_value = proc_close($process);
echo "command returned $return_value\n";
}
?>
ちなみにこのスクリプトではnst0を対象としているので,書き込んだ後テープは自動で巻き戻されない(no rewindのn).
毎回巻き戻しをしたければ,st0を対象にすれば良い.
0 件のコメント:
コメントを投稿