Linux上ThinkPHP项目备份实操指南
一 备份范围与准备
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 -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).sqltar -czvf /opt/backups/your_project/code_$(date +%F_%H-%M-%S).tar.gz -C /var/www your_project三 方案二 在ThinkPHP中编程实现备份(便于集成与可控)
$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。四 自动化与保留策略
crontab -e0 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 -delete0 2 * * * /bin/tar -czf /opt/backups/your_project/code_$(date +\%F).tar.gz -C /var/www your_project五 恢复与校验
mysql -u 用户名 -p 数据库名 < 备份文件.sql(回车后输入密码)。mysql -u 用户名 -p --default-character-set=utf8mb4 数据库名 < 备份文件.sqltar -xzvf code_2025-11-28.tar.gz -C /var/www/ && chown -R www-data:www-data /var/www/your_project