在 Ubuntu 上备份 ThinkPHP 项目的数据,通常包含两部分:
下面按常见场景给你一套实用方案。
ThinkPHP 的数据库配置一般在:
项目目录/config/database.php
或(旧版本):
项目目录/application/database.php
确认:
mysqldump -u 用户名 -p 数据库名 > /backup/thinkphp_db_$(date +%F).sql
示例:
mysqldump -u root -p thinkphp > /backup/thinkphp_2026-01-15.sql
输入密码后开始备份
mysqldump -u root -p thinkphp | gzip > /backup/thinkphp_$(date +%F).sql.gz
/var/www/html/thinkphp/
├── app/
├── public/
├── runtime/
├── config/
├── vendor/
└── uploads/ (如果有)
tar -czvf /backup/thinkphp_project_$(date +%F).tar.gz \
--exclude=/var/www/html/thinkphp/runtime \
/var/www/html/thinkphp
创建脚本:
nano /usr/local/bin/backup_thinkphp.sh
内容示例:
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR=/backup
DB_USER=root
DB_PASS=你的密码
DB_NAME=thinkphp
PROJECT_DIR=/var/www/html/thinkphp
mkdir -p $BACKUP_DIR
# 备份数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/db_$DATE.sql.gz
# 备份项目
tar -czvf $BACKUP_DIR/project_$DATE.tar.gz \
--exclude=$PROJECT_DIR/runtime \
$PROJECT_DIR
赋予权限:
chmod +x /usr/local/bin/backup_thinkphp.sh
crontab -e
每天凌晨 2 点备份:
0 2 * * * /usr/local/bin/backup_thinkphp.sh
gunzip < db_2026-01-15.sql.gz | mysql -u root -p thinkphp
tar -xzvf project_2026-01-15.tar.gz -C /
如果你愿意,可以告诉我:
我可以给你更精确的备份方案。