Ubuntu环境下ThinkPHP项目备份指南
在开始备份前,请确认以下信息:
/var/www/html/your_thinkphp_project);config/database.php或.env文件获取);/home/your_username/backups)。使用tar命令打包项目目录,保留文件结构和权限:
# 进入项目上级目录
cd /var/www/html
# 打包项目文件夹(排除不必要的文件,如runtime缓存)
sudo tar -czvf your_project_backup.tar.gz your_thinkphp_project --exclude='your_thinkphp_project/runtime'
-c创建新归档,-z用gzip压缩,-v显示过程,-f指定文件名;config/目录),可使用:sudo tar -czvf config_backup.tar.gz your_thinkphp_project/config/
备份完成后,将文件移动至安全存储路径:sudo mv *.tar.gz /home/your_username/backups/
mysqldump命令(推荐)# 执行备份(替换为实际数据库信息)
mysqldump -u root -p your_database_name > /home/your_username/backups/your_database_backup_$(date +\%F).sql
-u指定用户名,-p后跟密码(无空格),$(date +\%F)添加当前日期后缀(如2025-10-23),便于区分备份版本;.my.cnf文件(位于用户家目录)中,避免命令行泄露。若项目已配置ThinkPHP,可使用内置命令简化操作:
# 进入项目根目录
cd /var/www/html/your_thinkphp_project
# 执行备份(默认存储到runtime/db_backup目录)
php think db:backup
# 自定义存储路径(需修改config/console.php中的backup_path参数)
php think db:backup --path=/home/your_username/backups
通过cron定时任务实现定期自动备份,避免人工遗漏:
# 编辑当前用户的crontab文件
crontab -e
添加以下内容(以每天凌晨2点备份数据库、3点备份项目文件为例):
# 每天凌晨2点备份数据库
0 2 * * * mysqldump -u root -pYourSecretPassword your_database_name > /home/your_username/backups/your_database_backup_$(date +\%F).sql
# 每天凌晨3点备份项目文件
0 3 * * * tar -czvf /home/your_username/backups/your_project_backup_$(date +\%F).tar.gz /var/www/html/your_thinkphp_project --exclude='runtime'
%符号需转义为\%,避免cron解析错误;grep CRON /var/log/syslog检查任务执行情况。chmod 600 /home/your_username/backups/*.sql
chmod 600 /home/your_username/backups/*.tar.gz
.env文件)或加密工具(如openssl);find命令实现:# 删除30天前的备份文件
find /home/your_username/backups -name "*.sql" -mtime +30 -delete
find /home/your_username/backups -name "*.tar.gz" -mtime +30 -delete
定期从备份文件恢复数据到测试环境,确保备份完整可用:
# 恢复数据库(替换为实际路径和数据库信息)
mysql -u root -p your_database_name < /home/your_username/backups/your_database_backup_2025-10-23.sql
# 解压项目文件备份
tar -xzvf /home/your_username/backups/your_project_backup_2025-10-23.tar.gz -C /var/www/html/
恢复后,访问项目URL检查功能是否正常,确认数据一致性。