Linux上ThinkPHP项目如何备份
导读:Linux上ThinkPHP项目备份实操指南 一 备份范围与准备 明确备份对象: 代码与资源:项目源码目录(如**/var/www/your_project**)、.env或config/database.php等敏感配置。 数据与结构...
Linux上ThinkPHP项目备份实操指南
一 备份范围与准备
- 明确备份对象:
- 代码与资源:项目源码目录(如**/var/www/your_project**)、.env或config/database.php等敏感配置。
- 数据与结构:MySQL/MariaDB 数据库(建议同时保留结构与数据)。
- 准备备份目录与权限:
- 建议统一放在如**/opt/backups/your_project/**,并限制访问权限(仅备份用户可读写)。
- 示例:
sudo mkdir -p /opt/backups/your_project & & sudo chown -R www-data:www-data /opt/backups/your_project & & sudo chmod 700 /opt/backups/your_project
- 安全建议:避免在命令行或代码中明文写密码,优先使用环境变量或受控配置文件读取凭据。
- 工具检查:确保已安装mysqldump/mysql与tar,且运行备份的用户对数据库与备份目录具备相应权限。
二 方案一 快速手动备份(适合临时或一次性)
- 数据库备份(mysqldump):
- 基本用法:
mysqldump -u 用户名 -p 数据库名 > 备份文件.sql(回车后输入密码)。 - 指定主机与端口:
mysqldump -h 主机 -P 端口 -u 用户名 -p 数据库名 > 备份文件.sql。 - 示例:
mysqldump -h 127.0.0.1 -P 3306 -u root -p tp5_db > /opt/backups/your_project/db_$(date +%F_%H-%M-%S).sql
- 基本用法:
- 项目代码与配置打包:
- 示例:
tar -czvf /opt/backups/your_project/code_$(date +%F_%H-%M-%S).tar.gz -C /var/www your_project
- 示例:
- 说明:上述命令适用于所有基于MySQL的 ThinkPHP 项目,简单可靠,便于立即执行与迁移。
三 方案二 在ThinkPHP中编程实现备份(便于集成与可控)
- 命令行命令方式(推荐):
- 生成命令字符串时从配置读取连接信息,避免硬编码密码;使用exec/system执行并判断返回码。
- 示例要点:
- 获取配置:
$dbConfig = Db::getConfig(); - 构造命令:
mysqldump -h { $dbConfig['host']} -P { $dbConfig['port']} -u { $dbConfig['username']} -p{ $dbConfig['password']} { $dbConfig['database']} > { $backupFile} - 执行并校验:
exec($cmd, $out, $ret); $ret === 0表示成功。
- 获取配置:
- 自定义命令(便于团队与定时任务调用):
- 生成自定义命令:
php think make:command Backup,在execute()中封装上面的备份逻辑。 - 注册命令后可直接运行:
php think backup。
- 生成自定义命令:
- 安全与可维护性:
- 敏感信息通过环境变量或框架配置读取;对失败写入日志;备份完成后可做文件大小校验与保留策略。
四 自动化与保留策略
- 使用 Cron 定时执行:
- 示例(每天02:00备份数据库,保留7天):
- 编辑:
crontab -e - 条目:
0 2 * * * /usr/bin/mysqldump -h 127.0.0.1 -P 3306 -u dbuser -p'DBPASS' tp5_db > /opt/backups/your_project/db_$(date +\%F).sql & & find /opt/backups/your_project -name "db_*.sql" -mtime +7 -delete
- 编辑:
- 如需同时备份代码:
0 2 * * * /bin/tar -czf /opt/backups/your_project/code_$(date +\%F).tar.gz -C /var/www your_project
- 示例(每天02:00备份数据库,保留7天):
- 保留策略建议:
- 按时间滚动(如保留最近7–30天);
- 重要节点(版本上线、迁移)可打标签另存;
- 定期在测试环境恢复演练,验证可用性与完整性。
五 恢复与校验
- 数据库恢复:
- 基本用法:
mysql -u 用户名 -p 数据库名 < 备份文件.sql(回车后输入密码)。 - 指定字符集(如有乱码风险):
mysql -u 用户名 -p --default-character-set=utf8mb4 数据库名 < 备份文件.sql
- 基本用法:
- 代码与配置恢复:
- 解压覆盖:
tar -xzvf code_2025-11-28.tar.gz -C /var/www/ & & chown -R www-data:www-data /var/www/your_project - 恢复后核对:配置是否匹配、目录权限是否正确、应用是否能正常连接数据库。
- 解压覆盖:
- 校验清单:
- 检查备份文件大小与修改时间;
- 抽样表数据量对比;
- 在预备环境做一次全量恢复演练,确认无误再用于生产。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux上ThinkPHP项目如何备份
本文地址: https://pptw.com/jishu/759722.html
