linux

Linux中ThinkPHP如何备份

小樊
56
2025-09-02 15:51:10
栏目: 编程语言

在Linux中备份ThinkPHP项目,可按以下方式操作:

一、数据库备份

  1. 使用mysqldump命令

    mysqldump -u [用户名] -p[密码] [数据库名] > /路径/备份文件.sql  
    

    (示例:mysqldump -uroot -p123456 mydb > /home/backup/mydb_$(date +%F).sql

  2. 通过ThinkPHP的Db类
    在控制器或命令行中执行:

    use think\Db;  
    $db = Db::connect('mysql://用户名:密码@localhost/数据库名');  
    $tables = $db->getTables();  
    $backup = "SET FOREIGN_KEY_CHECKS=0;\n\n";  
    foreach ($tables as $table) {  
        $backup .= $db->query("SHOW CREATE TABLE `$table`")[0]['Create Table'] . ";\n\n";  
        $backup .= "INSERT INTO `$table` VALUES " . json_encode($db->table($table)->select()) . ";\n\n";  
    }  
    $backup .= "SET FOREIGN_KEY_CHECKS=1;";  
    file_put_contents('/路径/backup.sql', $backup);  
    

    (注:需自行处理数据格式,适合小规模数据)

二、文件备份

三、自动化备份

  1. 使用cron定时任务
    编辑crontab -e,添加:

    0 2 * * * /usr/bin/mysqldump -uroot -p123456 mydb > /home/backup/mydb_$(date +\%F).sql  
    0 3 * * * tar -czvf /home/backup/code_$(date +\%F).tar.gz /项目路径/config /项目路径/application  
    
  2. 通过ThinkPHP命令行
    创建自定义命令(如app/command/Backup.php),调用mysqldump或文件操作逻辑,配合crontab定时执行。

四、注意事项

0
看了该问题的人还看了