在Linux中备份ThinkPHP项目,可按以下方式操作:
使用mysqldump命令
mysqldump -u [用户名] -p[密码] [数据库名] > /路径/备份文件.sql
(示例:mysqldump -uroot -p123456 mydb > /home/backup/mydb_$(date +%F).sql)
通过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);
(注:需自行处理数据格式,适合小规模数据)
tar -czvf /路径/backup_$(date +%F).tar.gz /项目路径/config /项目路径/application
使用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
通过ThinkPHP命令行
创建自定义命令(如app/command/Backup.php),调用mysqldump或文件操作逻辑,配合crontab定时执行。