esWeb システム データのバックアップ
バックアップ方法を選択
すべてのデータをバックアップします
単一のテーブル データをバックアップします
選択してください
$d->query("$mysqldb からテーブルのステータスを表示");
While($d->nextrecord()){
echo "".$d->f('name')." ";}
?>
ターゲットの場所を選択
サーバーにバックアップします
ローカルにバックアップ
ボリューム バックアップを使用
分割ボリューム バックアップ k (バックアップを選択した場合のみ分割ボリュームを使用できます)サーバーへのバックアップ機能)
プログラムの説明
1. より大きなデータ テーブルの場合は、ボリューム バックアップを使用することを強くお勧めします。
2. ボリューム バックアップ機能は、サーバーへのバックアップを選択した場合にのみ使用できます。
="リセット" 値="リセット" クラス="ボタン" />
表>
フォーム>
/*----*/else{/*--------------メインプログラム---------------------- ------------------*/
if($_post['weizhi']=="localpc"&&$_post['fenjuan']=='yes')
{$msgs[]="サーバーへのバックアップを選択した場合のみ、ボリューム バックアップ機能を使用できます";
show_msg($msgs); ページエンド();}
if($_post['fenjuan']=="はい"&&!$_post['filesize'])
{$msgs[]="ボリューム バックアップ機能が選択されましたが、ボリューム ファイル サイズが入力されていませんでした";
show_msg($msgs); ページエンド();}
if($_post['weizhi']=="サーバー"&&!writeable($backup))
{$msgs[]="バックアップ ファイル ストレージ ディレクトリ '$backup' は書き込み可能ではありません。ディレクトリ属性を変更してください。";
show_msg($msgs); ページエンド();}/*----------すべてのテーブルをバックアップします---------------*/if($_post['bfzl']=="quanbubiao"){/* - ---*/
/*----ボリュームに分割されていません*/if(!$_post['fenjuan']){/*---------------------- - -------*/
if(!$tables=$d->query("$mysqldb からテーブルのステータスを表示"))
{$msgs[]="データベース構造の読み取り中にエラーが発生しました";
$sql="";
while($d->nextrecord($tables))
{
$table=$d->f("名前");
$sql.=make_header($table);
$d->query("select * from $table");
$num_fields=$d->nf();
while($d->nextrecord())
{$sql.=make_record($table,$num_fields);}
}
$filename=date("ymd",time())."_all.sql";
if($_post['weizhi']=="localpc") down_file($sql,$filename);
elseif($_post['weizhi']=="サーバー")
{if(write_file($sql,$filename))
$msgs[]="すべてのデータ テーブル データのバックアップが完了し、バックアップ ファイル '$backup/$filename' が生成されました";
else $msgs[]="すべてのデータテーブルのバックアップに失敗しました";
show_msg($msgs);
ページエンド();
}
/*-----------------ロールを終了しないでください*/}/*---------------------- --- */
/*---------------ボリューム*/else{/*---------------------- - -*/
if(!$_post['filesize'])
{$msgs[]="バックアップ ファイルのボリューム サイズを入力してください";
if(!$tables=$d->query("$mysqldb からテーブルのステータスを表示"))
{$msgs[]="データベース構造の読み取り中にエラーが発生しました";
$sql=""; $p=1;
$filename=date("ymd",time())."_all";
while($d->nextrecord($tables))
{
$table=$d->f("名前");
$sql.=make_header($table);
$d->query("select * from $table");
$num_fields=$d->nf();
while($d->nextrecord())
{$sql.=make_record($table,$num_fields);
if(strlen($sql)>=$_post['ファイルサイズ']*1000){
$filename.=("_v".$p.".sql");
If(write_file($sql,$filename))
$msgs[]="すべてのデータ テーブル-ボリューム-".$p."-データのバックアップが完了しました。バックアップ ファイル '$backup/$filename'" が生成されました;
else $msgs[]="バックアップテーブル-".$_post['テーブル名']."-失敗";
$p++;
$filename=date("ymd",time())."_all";
$sql="";}
}
}
if($sql!=""){$ファイル名.=("_v".$p.".sql");
if(write_file($sql,$filename))
$msgs[]="すべてのデータ テーブル-ボリューム-".$p."-データのバックアップが完了しました。バックアップ ファイル '$backup/$filename'" が生成されました;}
show_msg($msgs);
/*----------巻終わり*/}/*--------------------- - -----------------*/
/*----------すべてのテーブルのバックアップの終了*/}/*---------------------------- ----- ---------------*/
/*----------単一テーブルをバックアップ-----*/elseif($_post['bfzl']=="danbiao"){/*---------- --*/
if(!$_post['テーブル名'])
{$msgs[]="バックアップするデータテーブルを選択してください";}
/*----------各巻に分割されていません*/if(!$_post['fenjuan']){/*-------- - ----------*/
$sql=make_header($_post['テーブル名']);
$d->query("select * from ".$_post['tablename']);
$num_fields=$d->nf();
while($d->nextrecord())
{$sql.=make_record($_post['テーブル名'],$num_fields);}
$filename=date("ymd",time())."_".$_post['tablename'].".sql";
if($_post['weizhi']=="localpc") down_file($sql,$filename);
elseif($_post['weizhi']=="サーバー")
{if(write_file($sql,$filename))
$msgs[]="Table-".$_post['tablename']."-データのバックアップが完了し、バックアップ ファイル '$backup/$filename'" が生成されます;
else $msgs[]="バックアップテーブル-".$_post['テーブル名']."-失敗";
show_msg($msgs);
ページエンド();
}
/*----------------ロールを終了しないでください*/}/*--------------------- --- ----------*/
/*----------------ボリューム*/else{/*---------------------- - ---------------*/
if(!$_post['filesize'])
{$msgs[]="バックアップ ファイルのボリューム サイズを入力してください";
$sql=make_header($_post['テーブル名']);
$filename=date("ymd",time())."_".$_post['テーブル名'];
$d->query("select * from ".$_post['tablename']);
$num_fields=$d->nf();
while ($d->nextrecord())
{
$sql.=make_record($_post['テーブル名'],$num_fields);
If(strlen($sql)>=$_post['ファイルサイズ']*1000){
$filename.=("_v".$p.".sql");
If(write_file($sql,$filename))
$msgs[]="Table-".$_post['tablename']."- Volume-".$p."-データのバックアップが完了し、バックアップ ファイル '$backup/$filename'" が生成されます;
else $msgs[]="バックアップテーブル-".$_post['テーブル名']."-失敗";
$p++;
$filename=date("ymd",time())."_".$_post['テーブル名'];
$sql="";}
}
if($sql!=""){$ファイル名.=("_v".$p.".sql");
if(write_file($sql,$filename))
$msgs[]="Table-".$_post['tablename']."- Volume-".$p."-データのバックアップが完了し、バックアップ ファイル '$backup/$filename'" が生成されます。}
show_msg($msgs);
/*----------巻末*/}/*---------------------------- -- ------------------*/
/*----------バックアップ単一テーブルの終了*/}/*---------------------------- ---- ------------------*/
/*---*/}/*---------------メインプログラム終了---------------------- - ------------------*/
関数 write_file($sql,$filename)
{
$re=true;
グローバル $バックアップ;
if(!@$fp=fopen($backup."/".$filename,"w+")) {$re=false; echo "ターゲット ファイルを開けませんでした";}
if(!@fwrite($fp,$sql)) {$re=false; echo "ファイルの書き込みに失敗しました";}
if(!@fclose($fp)) {$re=false; echo "ターゲット ファイルを閉じることができませんでした";}
$re を返します;
}
関数 down_file($sql,$filename)
{
ob_end_clean();
header("コンテンツエンコーディング: なし");
header("content-type: ".(strpos($_server['http_user_agent'], 'msie') ? 'application/octetstream' : 'application/octet-stream'));
header("content-disposition: ".(strpos($_server['http_user_agent'], 'msie') ? 'inline; ' : 'attachment; ')."filename=".$filename);
header("content-length: ".strlen($sql));
header("プラグマ: キャッシュなし");
header("有効期限: 0");
エコー $sql;
$e=ob_get_contents();
ob_end_clean();
}
書き込み可能な関数($dir)
{
if(!is_dir($dir)) {
@mkdir($dir, 0777);
}
if(is_dir($dir))
{
if($fp = @fopen("$dir/test.test", 'w'))
{
@fclose($fp);
@unlink("$dir/test.test");
$書き込み可能 = 1;
}
他に{
$書き込み可能 = 0;
}
}
$writeable を返す;
}
関数 make_header($table)
{グローバル $d;
$sql="存在する場合はテーブルを削除 ".$table."n";
$d->query("show create table ".$table);
$d->nextrecord();
$tmp=preg_replace("/n/","",$d->f("テーブルの作成"));
$sql.=$tmp."n";
$sql を返します;
}
関数 make_record($table,$num_fields)
{グローバル $d;
$comma="";
$sql .= "「.$table.」に挿入します。values(";
for($i = 0; $i
{$sql .= ($comma."'".mysql_escape_string($d->record[$i])."'"); $comma = ",";}
$sql .= ")n";
$sql を返します;
}
関数 show_msg($msgs)
{
$title="ヒント:";
echo "
echo "
".$title." ";
echo "
";
while (list($k,$v)=each($msgs))
{
echo "".$v." ";
}
echo "