zoukankan      html  css  js  c++  java
  • 服务器定时备份数据库 执行文件

    <?php
    //每天早上备份一次 MySQL 数据库并自动打包,同时删除 5 天前的备份文件 建议在本地运行没有任何问题再传到服务器上 以后就可以添加计划任务
    ////////////////////////*/
    //保存目录,路径要用反斜杠.您需要手动建立它.
    //WinRAR.exe 要把压缩包的exe文件跟当前运行页面放在同一个目录,当然你也可以自己配置,这样才能压缩
    ini_set("max_execution_time", "0");//代码运行时间不限制 防止备份失败
    ini_set('memory_limit', '128M');//设置运行内存 根据需求可以修改
    date_default_timezone_set("PRC");
    header('Content-Type:application/json; charset=utf-8');
    $store_folder = 'databse_backup';
    if(!file_exists($store_folder))
    {
    mkdir($store_folder);
    }
    //用户名和密码
    //该帐号须有操作[所有]的数据库及FILE的权限

    //否则有些数据库不能备份.
    $db_username = "root";
    $db_password = "root";
    $time=time();
    $nowdir = $store_folder."\".date("Ymd",$time)."";
    $con = mysqli_connect("localhost", "root", "root");
    if(!file_exists($nowdir))
    {
    mkdir($nowdir);
    }
    if(!$con)
    {
    die('Could not connect: ' . mysqli_connect_error());
    }
    echo "正在备份请勿关闭页面....</br>";
    ob_flush();
    flush();
    sleep(1);
    //数据库执行文件地址
    $mysqladdres='D:phpStudyMySQLinmysqldump.exe';//我的服务器是 phpmystudy 根据自己的情况设置
    $res = mysqli_query($con,'show databases');
    $data = array();
    echo str_repeat(" ", 4096); //防止浏览器的缓存
    while ($row = mysqli_fetch_assoc($res))
    {
    $data[] = $row['Database'];

    system ($mysqladdres.' --opt '."$row[Database] -u{$db_username} ".($db_password?"-p{$db_password}":"")."> $nowdir\$row[Database].sql");
    echo "dumping database `$row[Database]`...</br>";
    ob_flush();
    flush();
    sleep(1);
    }
    echo " Winrar loading...</br> ";
    //system( dirname(__FILE__)."\WinRAR.exe a -ep1 -r -o+ -m5 -df "$nowdir.rar" "$nowdir" " );//如有WinRAR.exe文件在根目录时压缩sql文件
    //$dirName="$store_folder\".date("Ymd",$time-86400*5).'.rar';
    //if (file_exists($dirName)) {
    // @unlink($dirName);
    //}

    $dirName="$store_folder\".date("Ymd",$time-86400*5);
    //删除 5 天前的文件
    if (is_dir($dirName)) {
    $handle = @opendir($dirName);
    while (($file = @readdir($handle)) !== false) {
    if ($file != '.' && $file != '..') {
    $dir = $dirName . '/' . $file;
    is_dir($dir) ? removeDir($dir) : @unlink($dir);
    }
    }
    closedir($handle);
    }

    if (file_exists($dirName)) {
    @rmdir($dirName);
    }
    ob_flush();
    flush();
    sleep(1);
    echo " OK!</br>";
    mysqli_close($con);
    ob_end_flush();
    ?>

  • 相关阅读:
    严蔚敏数据结构线性表操作
    strcpy/strncpy、strcat/strncpy的替代方案strlcpy,strlcat
    使用DNS的反向区域,解决通过IP反向查询主机名,适合web环境通过IP定位故障主机名
    FreeBSD漏洞程序升级
    定义制造业操作(定义 MES/MOM 系统)
    定义制造业操作(定义 MES/MOM 系统)
    EF / EF CORE 打印SQL
    远程连接桌面Azure AD(Azure AD Joined Computer)
    《精通CSS第3版》(6)Flexbox
    FastNat内网穿透,给开发人员送的硬货福利限时送
  • 原文地址:https://www.cnblogs.com/zhang-bin/p/9790971.html
Copyright © 2011-2022 走看看