Пример #1
0
 /**
  * Auszuführender Cron-Code
  */
 public function run()
 {
     if (\fpcm\classes\baseconfig::$fpcmDatabase->getDbtype() == 'pgsql') {
         $this->updateLastExecTime();
         return true;
     }
     include_once \fpcm\classes\loader::libGetFilePath('Ifsnop/Mysqldump', 'Mysqldump.php');
     $dbconfig = \fpcm\classes\baseconfig::getDatabaseConfig();
     $dumpSettings = array();
     $this->dumpfile = \fpcm\classes\baseconfig::$dbdumpDir . '/' . $dbconfig['DBNAME'] . '_' . date('Y-m-d_H-i-s') . '.sql';
     if (function_exists('gzopen')) {
         $dumpSettings['compress'] = \Ifsnop\Mysqldump\Mysqldump::GZIP;
         $this->dumpfile .= '.gz';
     }
     $dumpSettings['single-transaction'] = false;
     $dumpSettings['lock-tables'] = false;
     $dumpSettings['add-locks'] = false;
     $dumpSettings['extended-insert'] = false;
     $dumpSettings['no-autocommit'] = false;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableArticles;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableAuthors;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableCategories;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableComments;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableConfig;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableCronjobs;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableFiles;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableIpAdresses;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableModules;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tablePermissions;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableRoll;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableSessions;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableSmileys;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableTexts;
     $dumpSettings['include-tables'][] = $dbconfig['DBPREF'] . '_' . \fpcm\classes\database::tableRevisions;
     $dumpSettings['include-tables'] = $this->events->runEvent('cronjobDbDumpIncludeTables', $dumpSettings['include-tables']);
     \fpcm\classes\logs::syslogWrite('Create new database dump in "' . \fpcm\model\files\ops::removeBaseDir($this->dumpfile, true) . '"...');
     $mysqlDump = new \Ifsnop\Mysqldump\Mysqldump($dbconfig['DBNAME'], $dbconfig['DBUSER'], $dbconfig['DBPASS'], $dbconfig['DBHOST'], $dbconfig['DBTYPE'], $dumpSettings);
     $mysqlDump->start($this->dumpfile);
     $this->updateLastExecTime();
     if (!file_exists($this->dumpfile)) {
         \fpcm\classes\logs::syslogWrite('Unable to create database dump in "' . \fpcm\model\files\ops::removeBaseDir($this->dumpfile, true) . '", file not found. See system check and error log!');
         return false;
     }
     \fpcm\classes\logs::syslogWrite('New database dump created in "' . \fpcm\model\files\ops::removeBaseDir($this->dumpfile, true) . '".');
     $text = \fpcm\classes\baseconfig::$fpcmLanguage->translate('CRONJOB_DBBACKUPS_TEXT', array('{{filetime}}' => date(\fpcm\classes\baseconfig::$fpcmConfig->system_dtmask, $this->getLastExecTime()), '{{dumpfile}}' => \fpcm\model\files\ops::removeBaseDir($this->dumpfile, true)));
     $email = new \fpcm\classes\email(\fpcm\classes\baseconfig::$fpcmConfig->system_email, \fpcm\classes\baseconfig::$fpcmLanguage->translate('CRONJOB_DBBACKUPS_SUBJECT'), $text);
     $email->submit();
     return true;
 }
Пример #2
0
 /**
  * Create a new backup of the DB. If you want to alter the default dumping behavior create a configuration file 
  * at `app/config/db-backup-settings.php` and return an array with the settings you want to alter. The full 
  * list of settings can be found at https://github.com/ifsnop/mysqldump-php#dump-settings . By default if you 
  * do not specify a value for `add-drop-table` it will be set to `true`.
  *
  * eg: `db-backup`
  * eg: `db-backup /app/db/`
  * eg `db-backup /app/db/ BACKUP.sql`
  *
  * @param array $args The arguements.
  * @param boolean $structureOnly Whether to backup only the structure.
  */
 public function dbBackup($args, $structureOnly = false)
 {
     $path = '/app/db/';
     if (isset($args[0]) && $args[0]) {
         $path = $args[0];
     }
     //if
     if ($structureOnly == true) {
         $fileName = \App::config('DB_DB') . '_STRUCTURE.sql';
     } else {
         $fileName = \App::config('DB_DB') . '.sql';
     }
     //el
     if (isset($args[1])) {
         $fileName = $args[1];
     }
     //if
     $path = \App::path() . '/' . trim($path, '/') . '/';
     if (!is_dir($path)) {
         echo 'Directory ' . $path . ' does not exsist, exiting.' . PHP_EOL;
         exit;
     }
     //if
     if (!is_writable($path)) {
         echo 'Directory ' . $path . ' is not writable, exiting.' . PHP_EOL;
         exit;
     }
     //if
     $fileName = $path . $fileName;
     $connect = sprintf("%1\$s:host=%2\$s;dbname=%3\$s", \App::config('DB_ENGINE'), \App::config('DB_HOST'), \App::config('DB_DB'));
     $config_path = \App::path() . '/app/config/db-backup-settings.php';
     if (is_file($config_path)) {
         $settings = (require $config_path);
         if (!is_array($settings)) {
             $settings = array();
         }
         //if
     } else {
         $settings = array();
     }
     //el
     if (!array_key_exists('add-drop-table', $settings)) {
         $settings['add-drop-table'] = true;
     }
     //if
     if ($structureOnly == true) {
         $settings['no-data'] = true;
     }
     //if
     $dump = new \Ifsnop\Mysqldump\Mysqldump($connect, \App::config('DB_USER'), \App::config('DB_PASSWORD'), $settings);
     $dump->start($fileName);
     echo "Backup successfully created at `{$fileName}`" . PHP_EOL;
 }
Пример #3
0
 private function getSqlDump()
 {
     $remote_host = $this->getConfig('remote', 'db_host');
     $remote_dbname = $this->getConfig('remote', 'db_name');
     $remote_dbuser = $this->getConfig('remote', 'db_uname');
     $remote_pass = $this->getConfig('remote', 'db_pass');
     $dumpSettings = array('add-drop-table' => true, 'add-drop-database' => true, 'exclude-tables' => array_filter(preg_split('/\\s+/', $this->getConfig('misc', 'exclude_tables'))));
     //https://github.com/ifsnop/mysqldump-php
     $dump = new Ifsnop\Mysqldump\Mysqldump("mysql:host={$remote_host};dbname={$remote_dbname}", $remote_dbuser, $remote_pass, $dumpSettings);
     $dumpfile = "{$this->dumpDir}/{$this->site}.sql";
     $dump->start($dumpfile);
     return $dumpfile;
 }
 /**
  */
 public function handleDump($gridField, $request = null)
 {
     $class = $gridField->getModelClass();
     $dumpSettings = array('compress' => 'NONE', 'include-tables' => array($class), 'add-drop-database' => false, 'add-drop-table' => true, 'single-transaction' => true, 'lock-tables' => false, 'add-locks' => true, 'extended-insert' => true, 'disable-foreign-keys-check' => true);
     $dump = new Ifsnop\Mysqldump\Mysqldump(DB::getConn()->currentDatabase(), SS_DATABASE_USERNAME, SS_DATABASE_PASSWORD, SS_DATABASE_SERVER, 'mysql', $dumpSettings);
     $webdir = '/private/dump/';
     $folder = Folder::find_or_make($webdir);
     $filename = $class . '-' . date('YmdhIs') . '.txt';
     //store as text otherwise default asset configuration kick us
     $file = $folder->getFullPath() . $filename;
     $res = $dump->start($file);
     $folder->syncChildren();
     $link = '/assets' . $webdir . $filename;
     return Controller::curr()->redirect($link);
 }
Пример #5
0
 } else {
     if (isset($_POST['disconnect-dropbox-excel-btn'])) {
         DropboxFetcher::disconnectServiceType(DropboxCon::SERVICE_APP_EXCEL_BACKUP);
         header('Location: ' . BASE_URL . "cloud/success");
         exit;
     } else {
         if (isBtnRqstDnldDBKeyPrsd()) {
             date_default_timezone_set('Europe/Athens');
             $curWorkingDate = new DateTime();
             $curWorkingHour = intval($curWorkingDate->format('H'));
             $filePath = ROOT_PATH . 'storage/backups/';
             $fileName = 'sass_app_db_' . date('m_d_Y_Hi') . '.sql';
             $zippedFileName = $fileName . '.gz';
             $fullPathName = $filePath . $fileName;
             $dumpSettings = array('compress' => Ifsnop\Mysqldump\Mysqldump::GZIP, 'no-data' => false, 'add-drop-table' => true, 'single-transaction' => false, 'lock-tables' => true, 'add-locks' => true, 'extended-insert' => true, 'disable-foreign-keys-check' => true, 'skip-triggers' => false, 'add-drop-trigger' => true, 'databases' => false, 'add-drop-database' => false, 'hex-blob' => true);
             $dump = new Ifsnop\Mysqldump\Mysqldump(App::getDbName(), App::getDbUsername(), App::getDbPassword(), App::getDbHost(), 'mysql', $dumpSettings);
             $dump->start($fullPathName);
             // all credits: http://stackoverflow.com/q/22046020/2790481
             header("Content-Description: File Transfer");
             header("Content-Disposition: attachment; filename=\"" . basename($zippedFileName) . "\";");
             header("Content-Type: application/octet-stream");
             header("Content-Encoding: binary");
             header("Content-Length: " . filesize($filePath . $zippedFileName));
             header("Expires: 0");
             header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
             header("Cache-Control: private");
             header("Pragma: public");
             ob_clean();
             readfile($filePath . $zippedFileName);
         } else {
             if (isBtnRqstDownloadExcelKeyPrsd()) {
Пример #6
0
     // Mode debug
     $debug = true;
     echo "Sauvegarde de la BD" . "\n";
 }
 if (isset($_GET['mail']) && strlen($_GET['mail']) > 0) {
     $json = "";
     $destinataire = $_GET['mail'];
     $date = new DateTime();
     $fichier = 'dump.sql' . $date->format('YmdHis');
     $fichierComplet = 'savDB/' . $fichier;
     if ($debug == true) {
         echo "Nom du fichier produit : " . $fichierComplet . "\n";
     }
     // 1. Dump
     $database = new Database();
     $dump = new Ifsnop\Mysqldump\Mysqldump("mysql:host=" . $database->getHost() . ";dbname=" . $database->getDb_name(), $database->getUsername(), $database->getPassword());
     $dump->start($fichierComplet);
     // 2. Read File
     $file_size = filesize($fichierComplet);
     if ($debug == true) {
         echo "Lecture du fichier, taille : " . $file_size . "\n";
     }
     $finfo = finfo_open(FILEINFO_MIME_TYPE);
     $ftype = finfo_file($finfo, $fichierComplet);
     if ($debug == true) {
         echo "Type : " . $ftype . "\n";
     }
     if ($debug == true) {
         echo "Basename : " . basename($fichierComplet) . "\n";
     }
     $handle = fopen($fichierComplet, "r");
Пример #7
0
<?php

if (isset($_GET['action']) && $_GET['action'] == 'new-save-bdd') {
    include "../config.php";
    include "../classe.php";
    $nom_save = "srice-" . date('d') . date('m') . date('Y') . date('H') . date('i') . "-nometablissement.sql";
    try {
        $dump = new \Ifsnop\Mysqldump\Mysqldump("mysql:host=localhost;dbname=srice", "root", "1992maxime");
        $save = $dump->start("../../data/" . $nom_save);
        $filesize = filesize("../../data/" . $nom_save) / 100000;
    } catch (Exception $e) {
        echo "Impossible de sauvegarder pour cause:" . $e->getMessage();
    }
    $ftp_connect = ftp_connect("ftp.cluster011.ovh.net", 21, 5);
    ftp_login($ftp_connect, "mockelynhp", "1992Maxime");
    ftp_pasv($ftp_connect, true);
    if (ftp_put($ftp_connect, '/www/save/srice/' . $nom_save, "../../data/" . $nom_save, FTP_ASCII)) {
        $sql = mysql_query("INSERT INTO sauvegarde (id, nom_sauvegarde, date_sauvegarde, taille_sauvegarde) VALUES (NULL, '{$nom_save}', '{$date_jour_heure_strt}', '{$filesize}')") or die(mysql_error());
        header("Location: ../../index.php?view=index&sub=parametrage&success=new-save-bdd");
    } else {
        header("Location: ../../index.php?view=index&sub=parametrage&error=new-save-bdd");
    }
}
if (isset($_GET['action']) && $_GET['action'] == 'rest-save-bdd') {
    include "../config.php";
    include "../classe.php";
    $idsauvegarde = $_GET['idsauvegarde'];
    $sql_save = mysql_query("SELECT * FROM sauvegarde WHERE id = '{$idsauvegarde}'") or die(mysql_error());
    $save = mysql_fetch_array($sql_save);
    $nom_fichier = $save['nom_sauvegarde'];
    $fichier = file_get_contents("../../data/" . $nom_fichier);
Пример #8
0
<?php

date_default_timezone_set('Europe/Berlin');
if (!file_exists(ROOT . "bdd_backup")) {
    mkdir(ROOT . "bdd_backup");
}
if ($config->getLastSave() != date("Y-m-d")) {
    try {
        $dsn = DB_TYPE . ":host=" . DB_HOST . ";dbname=" . DB_NAME;
        $dump = new \Ifsnop\Mysqldump\Mysqldump($dsn, DB_USER, DB_PASS);
        $dump->start("bdd_backup/save-" . date("Y-m-d") . ".sql");
        $config->setDateSaveToday();
    } catch (Exception $e) {
        echo "impossible de faire une save " . $e->getMessage();
    }
}
 /**
  * Create a new backup of the database if exist
  *
  * @author Jonathan Sandoval <*****@*****.**>
  **/
 static function createBackup()
 {
     $nombreDB = constant('DATABASE');
     $usuario = constant('USER');
     $host = constant('HOST');
     $clave = constant('PASSWORD');
     $tables = '*';
     $path = __DIR__ . "/Backups/backup(" . date('y-m-d') . ").sql";
     if (!file_exists($path)) {
         //get the backups amount
         exec("dir " . __DIR__ . "/Backups/", $output, $return);
         if (is_array($output) && sizeof($output) > 0) {
             $files = array();
             foreach ($output as $singleOutput) {
                 $aux = "";
                 $actual = "";
                 for ($i = 0; $i < strlen($singleOutput); $i++) {
                     $actual = substr($singleOutput, $i, 1);
                     if ($actual === ' ') {
                         if ($aux !== "") {
                             $files[] = $aux;
                         }
                         $aux = "";
                     } else {
                         $aux = $aux . $actual;
                     }
                 }
                 if ($aux !== "") {
                     $files[] = $aux;
                 }
             }
             while (sizeof($files) > 4) {
                 $exect = "rm '" . __DIR__ . "/Backups/" . $files[0] . "'";
                 exec($exect, $output);
                 array_shift($files);
             }
         }
         //Create the current Backup
         try {
             $stringHost = "mysql:host={$host};dbname={$nombreDB}";
             $dump = new Ifsnop\Mysqldump\Mysqldump($stringHost, $usuario, $clave);
             $dump->start($path);
         } catch (\Exception $e) {
             echo 'mysqldump-php error: ' . $e->getMessage();
         }
     }
 }
Пример #10
0
 */
require __DIR__ . "/../public_html/app/config/app.php";
$appInfoFile = ROOT_PATH . "config/dropbox.app";
# Include the Dropbox SDK libraries
require_once ROOT_PATH . "plugins/dropbox-sdk/lib/Dropbox/autoload.php";
include_once ROOT_PATH . '/plugins/mysqldump-php-1.4.1/src/Ifsnop/Mysqldump/Mysqldump.php';
use Dropbox as dbx;
try {
    date_default_timezone_set(App::getTimeZone());
    // run script only during working hours
    if (!App::isWorkingDateTimeOn()) {
        exit;
    }
    $filePath = ROOT_PATH . 'storage/backups/';
    $fileName = 'sass app db ' . date('m-d-Y Hi') . '.sql';
    $zippedFileName = $fileName . '.gz';
    $zippedFullFileName = $filePath . $zippedFileName;
    $curWorkingDateYear = App::getCurWorkingDate()->format('Y');
    $dumpSettings = ['compress' => Ifsnop\Mysqldump\Mysqldump::GZIP, 'no-data' => false, 'add-drop-table' => true, 'single-transaction' => false, 'lock-tables' => true, 'add-locks' => true, 'extended-insert' => true, 'disable-foreign-keys-check' => true, 'skip-triggers' => false, 'add-drop-trigger' => true, 'databases' => false, 'add-drop-database' => false, 'hex-blob' => true];
    $dump = new Ifsnop\Mysqldump\Mysqldump(App::getDbName(), App::getDbUsername(), App::getDbPassword(), App::getDbHost(), 'mysql', $dumpSettings);
    $dump->start($filePath . $fileName);
    $accessToken = DropboxFetcher::retrieveAccessToken(DropboxCon::SERVICE_APP_DATABASE_BACKUP)[DropboxFetcher::DB_COLUMN_ACCESS_TOKEN];
    $dbxClient = new dbx\Client($accessToken, App::getVersion());
    $adminAccountInfo = $dbxClient->getAccountInfo();
    $f = fopen($zippedFullFileName, "rb");
    $result = $dbxClient->uploadFile("/storage/backups/{$curWorkingDateYear}/{$zippedFileName}", dbx\WriteMode::add(), $f);
    fclose($f);
} catch (Exception $e) {
    App::storeError($e->getMessage());
    exit;
}