zoukankan      html  css  js  c++  java
  • 自动备份你的网站数据

    前端时间主机提供商服务器发生了问题,让人郁闷的事是将数据恢复到了一星期以前,导致好些博客数据丢失。

    痛定思痛,想出了一个自动备份网站数据的方法。

    1. 在服务器上实现数据转成SQL
    为了实现服务器上的数据转成SQL脚本,需要在服务器上放一个PHP文件,这个PHP文件的目的是连接到数据库,然后将数据读取出来,最后再转成SQL。例如,我们放一个tosql.php文件在服务器htdocs目录,内容如下:

    <?php
    error_reporting(E_ALL & ~E_NOTICE);
    
    include_once 'application/configs/dbconfig.php';
    include_once 'application/includes/db.class.php';
    
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: ' . gmdate( 'D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: no-store, no-cache, must-revalidate');
    header('Cache-Control: post-check=0, pre-check=0', false);
    header('Pragma: no-cache');
    
    header("Content-type: text/plain; charset=utf-8");
    
    $db = new db();
    $db->connect($config['db']['host'], $config['db']['user'], $config['db']['pass']);
    $db->select_db($config['db']['name']);
    $db->query('set names utf8');
    
    $sqldump = '';
    
    //  我的表名都以tbs_开头
    $sql = "SHOW TABLE STATUS WHERE name like 'tbs_%'";
    $query = $db->query($sql);
    while($table = $db->fetch_array($query)) {
        $sqldump .= sql_dumptable($table['Name']);
    }
    
    echo $sqldump;
      
    function sql_dumptable($table) 
    {
      global $db;
      
      $tabledump = "DROP TABLE IF EXISTS $table;\n";
      $createtable = $db->query("SHOW CREATE TABLE $table");
      $create = $db->fetch_array($createtable);
      $tabledump .= $create[1].";\n\n";
    
      $rows = $db->query("SELECT * FROM $table");
      $numfields = $db->num_fields($rows);
      $numrows = $db->num_rows($rows);
      while ($row = $db->fetch_array($rows)) 
      {
        $comma = "";
        $tabledump .= "INSERT INTO $table VALUES(";
        for($i = 0; $i < $numfields; $i++){
          $tabledump .= $comma."'".mysql_escape_string($row[$i])."'";
          $comma = ",";
        }
        $tabledump .= ");\n";
      }
    
      $tabledump .= "\n";
      return $tabledump;
    }

    2. 在本地新增一个PHP文件,目的是从服务器上获取SQL基本,然后写入到本地文件。这个PHP文件取名为nextdata.php,内容如下:

    <?php
    
    $filename = dirname(__FILE__) . '/data/tbs_' . date('YmdHis', mktime() + 3600 * 8) . '.sql';
    $sqldump = file_get_contents('http://www.nextphp.com/tosql.php');
    file_put_contents($filename, $sqldump);

    3. 实现定时备份
    本地使用的是Windows操作系统,可以使用计划任务定时的执行备份任务,这样需要一个批处理文件。批处理文件名称为nextdata.bat,内如如下:

    D:\wamp\bin\php\php5.3.5\php nextdata.php

    经过上述三个步骤后,我们的计划任务就会定时的执行服务器上的tosql.php文件,然后将其内容写入到本地,从而实现了数据库的备份任务。

  • 相关阅读:
    设计模式之迭代模式
    CentOS8 上安装Docker
    设计模式之模板方法模式
    APP内嵌网页使用微信或支付宝的H5支付
    一、Mongodb安装和配置
    一台电脑上配置多个git的ssh key
    ELK搭建(docker环境)
    Elasticsearch7学习笔记
    java通过url获取音视频文件时长
    c语言之链表实现
  • 原文地址:https://www.cnblogs.com/eastson/p/2886776.html
Copyright © 2011-2022 走看看