备份 Debian 上运行的 Laravel 项目通常包含 代码、数据库、环境变量、上传文件 几部分。下面给你一套比较完整、实用的做法(从简单到规范)。
一个 Laravel 项目通常需要备份:
/var/www/your-project.envstorage/apppublic/storagevendor/(一般不需要,可重新 composer install)cd /var/www
tar -czvf laravel-backup-$(date +%F).tar.gz your-project
包含:
.envstorage恢复:
tar -xzvf laravel-backup-2026-01-21.tar.gz
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
tar -czvf storage-backup-$(date +%F).tar.gz /var/www/your-project/storage
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
crontab -e
每天凌晨 2 点备份:
0 2 * * * /usr/local/bin/backup-laravel.sh >> /var/log/laravel-backup.log 2>&1
spatie/laravel-backupcomposer require spatie/laravel-backup
php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
php artisan backup:run
✅ 自动备份:
.env✅ 支持:
php artisan schedule:run
Laravel Kernel.php:
$schedule->command('backup:run')->daily();
✅ 不要备份到同一块磁盘 ✅ .env 不要公开 ✅ 数据库备份要加密 ✅ 定期测试恢复流程
| 类型 | 频率 |
|---|---|
| 代码 | 每次部署 |
| 数据库 | 每天 |
| 上传文件 | 每天 |
| 全量备份 | 每周 |
你可以告诉我:
我可以给你 完全定制的一套备份方案。