13

MySQLデータベースを定期的にバックアップするために、Laravel 5でコードを書いています。これまでの私のコードは次のようになります。

    $filename = 'database_backup_'.date('G_a_m_d_y').'.sql';
    $destination = storage_path() . '/backups/';

    $database = \Config::get('database.connections.mysql.database');
    $username = \Config::get('database.connections.mysql.username');
    $password = \Config::get('database.connections.mysql.password');

    $sql = "mysqldump $database --password=$password --user=$username --single-transaction >$destination" . $filename;

    $result = exec($sql, $output); // TODO: check $result

    // Copy database dump to S3

    $disk = \Storage::disk('s3');

    // ????????????????????????????????
    //  What goes here?
    // ????????????????????????????????

次のようなことを提案するソリューションをオンラインで見ました。

$disk->put('my/bucket/' . $filename, file_get_contents($destination . $filename));

しかし、大きなファイルの場合、file_get_contents() を使うのはもったいないのではないでしょうか? より良い解決策はありますか?

4

6 に答える 6

2

ドキュメントを見る唯一の方法は、putファイルコンテンツを必要とするメソッドを使用することです。2 つのファイル システム間でファイルをコピーする方法はありません。おそらく、現時点では、あなたが提供したソリューションが唯一の方法です。

考えてみれば、最終的にローカルファイルシステムからs3にファイルをコピーするとき、ファイルの内容をS3に入れる必要があるので、確かにそれほど無駄ではないと思います。

于 2015-04-09T04:59:34.177 に答える