Laravel项目在Linux上的备份方案
导读:Linux上Laravel项目备份方案 一 备份范围与策略 备份范围建议覆盖:代码与配置(含 .env)、数据库(如 MySQL/MariaDB)、用户上传文件(storage/app、public 等)、以及必要的证书与密钥。 备份策略...
Linux上Laravel项目备份方案
一 备份范围与策略
- 备份范围建议覆盖:代码与配置(含 .env)、数据库(如 MySQL/MariaDB)、用户上传文件(storage/app、public 等)、以及必要的证书与密钥。
- 备份策略建议:采用“全量打包 + 数据库导出 + 异地/远程存储”的组合;通过 cron 定时执行,并做好保留周期与清理策略,避免磁盘被占满。
二 快速上手 手动备份命令
- 项目文件打包
- 进入项目根目录后打包(排除日志与缓存可减少体积):
cd /path/to/laravel tar --exclude='storage/logs' --exclude='storage/framework/cache' \ --exclude='storage/framework/sessions' --exclude='storage/framework/views' \ -czvf /backup/laravel_project_$(date +%F_%H-%M-%S).tar.gz -C /path/to/laravel .
- 进入项目根目录后打包(排除日志与缓存可减少体积):
- 数据库备份
- MySQL/MariaDB:
mysqldump -u DB_USER -p DB_NAME > /backup/laravel_db_$(date +%F_%H-%M-%S).sql - 如为 MariaDB,也可用
mariadb命令;如使用 PostgreSQL,请改用pg_dump。
- MySQL/MariaDB:
- 仅备份用户上传与证书等关键目录(可选)
tar -czvf /backup/laravel_uploads_$(date +%F_%H-%M-%S).tar.gz \ storage/app public storage/framework/cache storage/framework/sessions - 远程传输(示例)
scp /backup/laravel_*.tar.gz user@remote:/backup/ scp /backup/laravel_db_*.sql user@remote:/backup/
以上命令可直接在服务器上执行,适合临时或首次备份。
三 自动化脚本与定时任务
- 备份脚本示例(/usr/local/bin/backup_laravel.sh)
#!/usr/bin/env bash set -Eeuo pipefail PROJECT_DIR="/var/www/laravel" BACKUP_DIR="/backup/laravel" DATE=$(date +%F_%H-%M-%S) DB_USER="DB_USER" DB_PASS="DB_PASS" DB_NAME="DB_NAME" REMOTE_USER="backup" REMOTE_HOST="remote.example.com" REMOTE_DIR="/backup/laravel" RETENTION_DAYS=7 mkdir -p "$BACKUP_DIR" # 1) 项目文件 tar --exclude='storage/logs' --exclude='storage/framework/cache' \ --exclude='storage/framework/sessions' --exclude='storage/framework/views' \ -czvf "$BACKUP_DIR/laravel_project_$DATE.tar.gz" -C "$PROJECT_DIR" . # 2) 数据库 mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/laravel_db_$DATE.sql" # 3) 可选:上传到远程 # rsync -avz --remove-source-files "$BACKUP_DIR/" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/" # 或使用 scp(取消下一行注释) # scp "$BACKUP_DIR/laravel_"* "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/" # 4) 清理旧备份 find "$BACKUP_DIR" -type f -mtime +$RETENTION_DAYS -delete - 赋权与定时
chmod +x /usr/local/bin/backup_laravel.sh crontab -e # 每天 01:00 执行 0 1 * * * /usr/local/bin/backup_laravel.sh > > /var/log/backup_laravel.log 2> & 1
该方案将打包、导出、远程传输与保留策略整合为脚本,便于维护与审计。
四 恢复步骤
- 恢复项目文件
tar -xzvf /backup/laravel_project_YYYY-MM-DD_HH-MM-SS.tar.gz -C /var/www/laravel chown -R www-data:www-data /var/www/laravel - 恢复数据库
mysql -u DB_USER -p DB_NAME < /backup/laravel_db_YYYY-MM-DD_HH-MM-SS.sql - 可选:重建优化缓存
php artisan config:clear php artisan route:clear php artisan view:clear php artisan config:cache php artisan route:cache php artisan view:cache
恢复顺序一般为:先数据库、后代码;如涉及队列或调度,按需重启队列/服务。
五 安全与运维建议
- 凭据安全:避免在命令行中明文写密码,优先使用 ~/.my.cnf 或环境变量;脚本权限设为 700,备份目录权限设为 700/750。
- 加密与脱敏:敏感备份可在传输或落盘前使用 GPG 加密;远程传输建议使用 SSH 密钥 或 rsync over SSH。
- 完整性校验:对关键备份生成 SHA256 校验和并记录日志;定期抽样恢复演练,验证可用性。
- 存储与保留:本地保留 7–30 天,远程/云端保留更长周期;监控磁盘使用率并设置告警。
- 数据库一致性:大型库建议在低峰期执行,必要时使用
--single-transaction(InnoDB)或--lock-all-tables(MyISAM)等选项以减少影响。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Laravel项目在Linux上的备份方案
本文地址: https://pptw.com/jishu/761801.html
