首页主机资讯Laravel项目在Linux上的备份方案

Laravel项目在Linux上的备份方案

时间2025-12-02 23:18:03发布访客分类主机资讯浏览1237
导读:Linux上Laravel项目备份方案 一 备份范围与策略 备份范围建议覆盖:代码与配置(含 .env)、数据库(如 MySQL/MariaDB)、用户上传文件(storage/app、public 等)、以及必要的证书与密钥。 备份策略...

Linux上Laravel项目备份方案

一 备份范围与策略

  • 备份范围建议覆盖:代码与配置(含 .env)、数据库(如 MySQL/MariaDB)、用户上传文件(storage/apppublic 等)、以及必要的证书与密钥。
  • 备份策略建议:采用“全量打包 + 数据库导出 + 异地/远程存储”的组合;通过 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
  • 仅备份用户上传与证书等关键目录(可选)
    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
Linux服务器上Laravel日志管理策略 Linux上Laravel队列工作原理是什么

游客 回复需填写必要信息