4

プロジェクトのバックアップ スクリプトを作成しています。このスクリプトは cron 経由で実行されます。

現在、私は使用しています:

<?php
include("config.php");

/* Misc */
$pathtobackup = realpath('.');
$backupfolder = realpath("backup");
$sqlfilename = "SQLDUMP-".date("d-m-Y--H-i").".sql";
$backupfilename = "BACKUP-".date("d-m-Y--H-i").".zip";
$backupfilepath = $backupfolder."/".$backupfilename;

/* Systemcall */
exec("/usr/bin/mysqldump -u{$mysqluser} -p{$mysqlpw} -h {$mysqlserver} {$mysqldb}", $sqldata, $fp);

$sqldump = implode("\n", $sqldata);

if ($fp!=0){
    die("could not create mysql dump\n");
}

/* Create Zip */
$zip = new ZipArchive();

if ($zip->open($backupfilepath, ZIPARCHIVE::CREATE)!==TRUE) {
    die("cannot open <{$backupfilepath}>\n");
}


$path = realpath('.');

$iterator  = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathtobackup, FilesystemIterator::SKIP_DOTS));

foreach($iterator as $name=>$object){

    $zip->addFile($name);

}

$zip->addFromString($sqlfilename, $sqldump);

if ($zip->close()!==TRUE) {
    die("cannot write <{$backupfilepath}>\n");
}

?>

しかし、純粋なPHPでMySQL Dumpを作成して、互換性を高め、使用する方法がない他のサーバーでも使用できるようにしたいと思いsystemますmysqldump.

150ファイルライブラリを使用しない解決策を知っていることを願っています:)

ごきげんよう、フレデリック

4

2 に答える 2

1

本当にこの方法で行う必要がmysqlある場合は、そのようなスクリプトを作成する際に考慮すべきいくつかのクエリを次に示します。

SHOW TABLES- すべてのデータベース テーブル名を返します

SHOW CREATE TABLE table_nameテーブルの作成に使用された SQL クエリを返します

SHOW PROCEDURE STATUSそしてSHOW FUNCTION STATUS- ストアド プロシージャと関数のリストを返します

SHOW CREATE PROCEDURE procedure_nameおよびSHOW CREATE FUNCTION function_name- ストアド プロシージャと関数の作成に使用されるクエリを返す

残りは通常SELECTINSERTクエリです。

于 2012-06-03T20:46:39.390 に答える