备份ThinkPHP项目需覆盖项目文件、数据库、配置文件三大核心部分,确保数据完整性。
使用tar命令将ThinkPHP项目目录(如/var/www/html/my_thinkphp_project)打包为压缩文件,保留目录结构:
cd /var/www/html # 进入项目父目录
tar -czvf my_thinkphp_project_backup.tar.gz my_thinkphp_project # 打包项目目录
说明:压缩包会包含app(应用目录)、public(入口目录)、config(配置目录)等核心文件。
ThinkPHP项目通常使用MySQL/PostgreSQL数据库,通过mysqldump(MySQL)或pg_dump(PostgreSQL)导出数据库结构和数据:
# MySQL示例(替换为实际信息)
mysqldump -u root -p my_thinkphp_db > my_thinkphp_db_backup.sql
说明:执行后会提示输入数据库密码,生成的.sql文件包含所有表结构和数据。
ThinkPHP的配置文件(如.env、config/app.php)包含数据库连接、应用密钥等敏感信息,需单独备份:
cp /var/www/html/my_thinkphp_project/.env /path/to/backup/.env # 备份环境变量文件
cp -r /var/www/html/my_thinkphp_project/config /path/to/backup/config # 备份配置目录
说明:.env文件通常存储数据库用户名、密码等关键信息,务必妥善保管。
通过cron定时任务实现每日自动备份,避免人工遗漏:
# 编辑当前用户的cron任务
crontab -e
添加以下内容(每日凌晨2点执行备份,替换为实际路径):
0 2 * * * /bin/bash /path/to/backup_script.sh
备份脚本示例(/path/to/backup_script.sh):
#!/bin/bash
# 定义路径和日期
PROJECT_PATH="/var/www/html/my_thinkphp_project"
BACKUP_PATH="/path/to/backup"
DATE=$(date +"%Y%m%d")
# 创建备份目录
mkdir -p $BACKUP_PATH
# 备份项目文件
tar -czvf $BACKUP_PATH/my_thinkphp_project_$DATE.tar.gz $PROJECT_PATH
# 备份数据库
mysqldump -u root -p my_thinkphp_db > $BACKUP_PATH/my_thinkphp_db_$DATE.sql
# 备份配置文件
cp $PROJECT_PATH/.env $BACKUP_PATH/.env_$DATE
cp -r $PROJECT_PATH/config $BACKUP_PATH/config_$DATE
echo "Backup completed on $DATE"
注意:给脚本添加执行权限:chmod +x /path/to/backup_script.sh。
恢复项目时需按项目文件→数据库→配置文件的顺序操作,确保数据一致性。
将备份的压缩包解压到原项目目录(需停止Web服务以避免文件冲突):
# 停止Apache/Nginx服务(根据实际服务选择)
sudo systemctl stop apache2 # 或 sudo systemctl stop nginx
# 解压备份文件到项目目录
tar -xzvf /path/to/backup/my_thinkphp_project_backup.tar.gz -C /var/www/html/
# 启动Web服务
sudo systemctl start apache2 # 或 sudo systemctl start nginx
说明:解压前停止服务可避免文件损坏。
使用mysql命令将备份的.sql文件导入数据库(需提前创建同名数据库):
# 登录MySQL
mysql -u root -p
# 创建数据库(若不存在)
CREATE DATABASE my_thinkphp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 退出MySQL
exit;
# 导入备份文件
mysql -u root -p my_thinkphp_db < /path/to/backup/my_thinkphp_db_backup.sql
说明:导入前需确保数据库字符集与原项目一致(如utf8mb4)。
将备份的配置文件复制回原项目目录,覆盖现有文件:
cp /path/to/backup/.env_$DATE /var/www/html/my_thinkphp_project/.env # 恢复环境变量文件
cp -r /path/to/backup/config_$DATE /var/www/html/my_thinkphp_project/config # 恢复配置目录
说明:恢复后需检查配置文件中的路径、密钥是否与当前环境一致。
ThinkPHP提供了db:restore命令,可简化数据库恢复流程(需提前配置数据库连接):
# 进入项目根目录
cd /var/www/html/my_thinkphp_project
# 执行恢复命令(需替换为实际备份文件路径)
php think db:restore /path/to/backup/my_thinkphp_db_backup.sql
说明:命令会自动将备份文件中的数据导入数据库,适合习惯使用框架工具的用户。
750),避免未授权访问敏感数据。.env、数据库密码等敏感信息需加密存储,或限制访问权限。