📜  数据库和文件备份 laravel - PHP (1)

📅  最后修改于: 2023-12-03 14:54:54.508000             🧑  作者: Mango

数据库和文件备份 Laravel - PHP

备份数据库和文件是任何 Web 项目中必须要考虑的一个方面。Laravel 提供多种方法来创建和维护备份。本文介绍了 Laravel 中如何备份和恢复数据库以及如何备份和恢复文件。此外,还介绍了如何设置自动备份和清理备份文件的计划。

备份和恢复数据库
创建数据库备份

要创建一个数据库备份,可以使用 artisan 命令 db:backup。运行以下命令可以创建默认数据库备份:

php artisan db:backup

在运行命令后,将在默认目录 storage/app/backups 中创建一个备份文件,并使用日期和时间戳的格式对文件名进行命名。

恢复数据库备份

要恢复一个数据库备份,可以使用 artisan 命令 db:restore。运行以下命令将默认从备份文件 2019_09_08_000001_create_backup.sql 恢复备份:

php artisan db:restore 2019_09_08_000001_create_backup.sql
自定义数据库备份配置

要自定义配置备份,可以在 .env 文件中设置以下变量:

# 备份目录
DB_BACKUP_PATH=storage/app/backups/

# 备份过期时间,365 天
DB_BACKUP_EXPIRATION_DAYS=365

# 是否启用清理过期备份
DB_BACKUP_DELETE_EXPIRED=true

# 备份文件名是否包含日期时间戳
DB_BACKUP_FILENAME_TIMESTAMP=true

# 是否启用压缩备份
DB_BACKUP_COMPRESS=true

# 备份文件压缩类型
DB_BACKUP_COMPRESSION_TYPE=gzip

# 数据库备份的默认连接名称
DB_CONNECTION=mysql

# 备份时不包含的表
DB_BACKUP_EXCLUDE=table1,table2
备份和恢复文件

要备份文件,可以使用文件系统的驱动器之一来管理文件。默认情况下,Laravel 配置了本地驱动器。如果要使用其他驱动器,请查看如何使用 亚马逊 S3 驱动器 等。

备份文件

要备份文件,可以使用 artisan 命令 storage:backup。运行以下命令将默认备份 storage/app 目录下的文件:

php artisan storage:backup

在运行命令后,将在默认目录 storage/app/backups 中创建一个备份文件,并使用日期和时间戳的格式对文件名进行命名。

恢复文件

要恢复文件备份,可以将备份文件直接复制到指定的目录中。将备份文件复制到 storage/app 目录下即可恢复备份。

自定义文件备份配置

要自定义文件备份配置,可以在 .env 文件中设置以下变量:

# 备份目录
FILES_BACKUP_PATH=storage/app/backups/

# 备份过期时间,365 天
FILES_BACKUP_EXPIRATION_DAYS=365

# 是否启用清理过期备份
FILES_BACKUP_DELETE_EXPIRED=true

# 备份文件名是否包含日期时间戳
FILES_BACKUP_FILENAME_TIMESTAMP=true

# 是否启用压缩备份
FILES_BACKUP_COMPRESS=true

# 备份文件压缩类型
FILES_BACKUP_COMPRESSION_TYPE=gzip

# 要备份的目录
FILES_BACKUP_PATHS=storage/app,public
自动备份

Laravel 提供了一个系统,可以自动备份数据库和文件,并按配置清理过期备份。

配置计划

要配置计划备份,可以使用 crontab(Linux/Mac)或 Task Scheduler(Windows)将 schedule:run 命令添加到您的系统计划中。运行以下 artisan 命令将默认计划添加到 App\Console\Kernel 类的 schedule 方法中:

php artisan schedule:work
// app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
    // 备份数据库每天晚上 10 点
    $schedule->command('db:backup')->dailyAt('22:00');

    // 备份文件每天晚上 11 点
    $schedule->command('storage:backup')->dailyAt('23:00');

    // 清理过期备份每月第一天晚上 12 点
    $schedule->command('db:clean')->monthlyOn(1, '00:00');
    $schedule->command('storage:clean')->monthlyOn(1, '00:00');
}
运行计划

为了运行计划,可以在系统计划中使用以下命令:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

该命令每分钟运行一次 schedule:run,使 Laravel 能够计划和运行您的任务。

结论

现在,您已经知道如何使用 Laravel 来备份和恢复数据库和文件,以及如何自动备份和清理过期备份。使用这些功能,您可以确保在发生故障或数据丢失时能够恢复您的应用程序。