You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.5共享主机应用自动备份至云端方案咨询

完全可以用Laravel内置的任务调度来实现你的需求,不用折腾复杂的Unix脚本——我之前在共享主机上部署的Laravel项目就是这么弄的,给你一套成熟的方案:

核心方案:Laravel任务调度+第三方扩展包

Laravel本身的任务调度能轻松实现每日自动执行,再搭配成熟的备份扩展包,就能一站式搞定文件压缩、数据库备份、云端同步所有环节,不用自己从头写功能。

一、先搞定Laravel任务调度的触发

共享主机一般都有Cron管理面板,你只需要添加一条Cron命令,让Laravel的调度器每分钟运行一次(Laravel会自己处理「每日执行」的逻辑):

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

注意:如果共享主机的php命令路径不对,你可以通过which php查看完整路径,替换掉上面的php。

二、用扩展包实现备份核心功能

推荐用spatie/laravel-backup这个包,它完美适配Laravel5.5,能一键处理文件打包、数据库导出,还自带多种云端存储的同步支持。

安装步骤:

  1. 用Composer安装适配Laravel5.5的版本:
composer require spatie/laravel-backup:6.19.0
  1. 发布配置文件:
php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
  1. 配置备份范围(修改config/backup.php):
    在source/files节点里指定要备份的目录,同时排除没必要的文件节省空间:
    'files' => [
        'include' => [
            base_path(), // 整个Laravel项目文件
            storage_path('app'), // 你的上传文件目录
        ],
        'exclude' => [
            base_path('vendor'), // 排除vendor,可通过composer重新安装
            base_path('node_modules'),
            storage_path('framework'),
            storage_path('logs'),
        ],
    ],
    
    数据库部分默认会读取.env里的配置,不用额外修改source/databases节点。

三、配置云端同步(Dropbox/Google Drive)

这个扩展包原生支持多种云端存储,下面是两个主流平台的配置方法:

1. Dropbox同步

  • 安装Dropbox适配包:
composer require spatie/flysystem-dropbox:1.2.3
  • 在config/backup.php的destination/disks里添加dropbox:
'disks' => [
    'dropbox',
    // 其他你需要的存储磁盘...
],
  • 在config/filesystems.php里配置Dropbox磁盘:
'disks' => [
    // ...其他磁盘配置
    'dropbox' => [
        'driver' => 'dropbox',
        'token' => env('DROPBOX_ACCESS_TOKEN'),
    ],
],
  • 去Dropbox开发者平台创建应用,生成访问令牌,放到.env里:DROPBOX_ACCESS_TOKEN=你的令牌

2. Google Drive同步

  • 安装Google Drive适配包:
composer require nao-pon/flysystem-google-drive:~1.1
  • 在config/backup.php的destination/disks里添加google-drive
  • 在config/filesystems.php里配置:
'google-drive' => [
    'driver' => 'google-drive',
    'clientId' => env('GOOGLE_DRIVE_CLIENT_ID'),
    'clientSecret' => env('GOOGLE_DRIVE_CLIENT_SECRET'),
    'refreshToken' => env('GOOGLE_DRIVE_REFRESH_TOKEN'),
    'folderId' => env('GOOGLE_DRIVE_FOLDER_ID'), // 指定备份文件存放的文件夹ID
],
  • 去Google Cloud平台创建OAuth客户端,获取对应的ID、密钥和刷新令牌,填入.env即可。

四、创建每日备份任务

打开app/Console/Kernel.php,在schedule方法里添加任务:

protected function schedule(Schedule $schedule)
{
    $schedule->command('backup:run')
             ->daily() // 默认每日凌晨0点执行
             ->timezone('Asia/Shanghai') // 可以指定你需要的时区
             ->sendOutputTo(storage_path('logs/backup.log')); // 记录备份日志,方便排查问题
}

五、额外优化建议

  • 配置备份清理规则:在config/backup.php的cleanup节点设置保留备份的时长,避免云端空间被占满:
    'cleanup' => [
        'strategy' => \Spatie\Backup\Tasks\Cleanup\Strategies\DefaultStrategy::class,
        'default_strategy' => [
            'keep_all_backups_for_days' => 7,
            'keep_daily_backups_for_days' => 30,
            'keep_weekly_backups_for_weeks' => 8,
            'delete_oldest_backups_when_using_more_megabytes_than' => 5000,
        ],
    ],
    
  • 测试任务:手动执行php artisan backup:run,检查是否能生成备份并同步到云端,同时查看storage/logs/backup.log有没有错误。

内容的提问来源于stack exchange,提问作者jpussacq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:23:18