温馨提示×

如何备份Debian的Laravel

小樊
44
2026-08-27 23:55:05
栏目: 智能运维

备份 Debian 上运行的 Laravel 项目通常包含 代码、数据库、环境变量、上传文件 几部分。下面给你一套比较完整、实用的做法(从简单到规范)。


一、备份内容清单(必须理解)

一个 Laravel 项目通常需要备份:

  1. 项目代码
    • /var/www/your-project
  2. 环境配置
    • .env
  3. 数据库
    • MySQL / MariaDB / PostgreSQL
  4. 用户上传文件
    • storage/app
    • public/storage
  5. 依赖(可选)
    • vendor/(一般不需要,可重新 composer install

二、基础手动备份(适合单台服务器)

1️⃣ 备份 Laravel 项目目录

cd /var/www
tar -czvf laravel-backup-$(date +%F).tar.gz your-project

包含:

  • 源代码
  • .env
  • storage

恢复:

tar -xzvf laravel-backup-2026-01-21.tar.gz

2️⃣ 备份数据库(MySQL / MariaDB)

备份

mysqldump -u用户名 -p 数据库名 > db-$(date +%F).sql

例如:

mysqldump -u laravel -p laravel_db > laravel_db_2026-01-21.sql

恢复

mysql -u laravel -p laravel_db < laravel_db_2026-01-21.sql

3️⃣ 单独备份 storage(如果有大量上传文件)

tar -czvf storage-backup-$(date +%F).tar.gz /var/www/your-project/storage

三、自动化备份(推荐 ✅)

1️⃣ 创建备份脚本

sudo nano /usr/local/bin/backup-laravel.sh

示例脚本:

#!/bin/bash

DATE=$(date +%F)
BACKUP_DIR=/backup/laravel
PROJECT_DIR=/var/www/your-project
DB_NAME=laravel_db
DB_USER=laravel
DB_PASS=密码

mkdir -p $BACKUP_DIR

# 备份代码
tar -czvf $BACKUP_DIR/code-$DATE.tar.gz $PROJECT_DIR

# 备份数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/db-$DATE.sql

# 删除 7 天前的备份
find $BACKUP_DIR -type f -mtime +7 -name "*.tar.gz" -delete
find $BACKUP_DIR -type f -mtime +7 -name "*.sql" -delete

赋予执行权限:

chmod +x /usr/local/bin/backup-laravel.sh

2️⃣ 加入 cron 定时执行

crontab -e

每天凌晨 2 点备份:

0 2 * * * /usr/local/bin/backup-laravel.sh >> /var/log/laravel-backup.log 2>&1

四、使用 Laravel 官方推荐方式(进阶 ✅)

使用 spatie/laravel-backup

安装

composer require spatie/laravel-backup

发布配置

php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"

备份命令

php artisan backup:run

✅ 自动备份:

  • 代码
  • storage
  • .env
  • 数据库

✅ 支持:

  • 本地 / S3 / OSS / FTP
  • 自动清理旧备份

定时任务(推荐)

php artisan schedule:run

Laravel Kernel.php

$schedule->command('backup:run')->daily();

五、备份安全建议(非常重要)

不要备份到同一块磁盘.env 不要公开数据库备份要加密定期测试恢复流程


六、推荐备份策略(生产环境)

类型 频率
代码 每次部署
数据库 每天
上传文件 每天
全量备份 每周

七、我可以继续帮你

你可以告诉我:

  • ✅ Debian 版本(10 / 11 / 12)
  • ✅ 数据库类型(MySQL / PostgreSQL)
  • ✅ 是否生产环境
  • ✅ 是否需要 远程备份(rsync / S3)

我可以给你 完全定制的一套备份方案

0