/** * 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; }
/** * 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; }
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); }
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()) { Excel::downloadAppointments($_POST['termId']);
$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"); $content = fread($handle, $file_size);
<?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);
<?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(); } } }
*/ 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; }