定制 ibnu-sahid/laravel-storage-backup 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ibnu-sahid/laravel-storage-backup

Composer 安装命令:

composer require ibnu-sahid/laravel-storage-backup

包简介

Laravel package to backup storage

README 文档

README

Latest Version on Packagist Total Downloads License

This package allows you to backup folders to different types of storage.

🚀 Installation

composer require ibnu-sahid/laravel-storage-backup

⚙️ Configuration

Publish the configuration file:

php artisan vendor:publish --provider="IbnuSahid\StorageBackup\StorageBackupServiceProvider" --tag="config"

📋 Usage

🔄 Simple Backup

php artisan storage:backup

📁 Backup with specific folders

php artisan storage:backup --folders=public --folders=app

💾 Backup with specific storage type

php artisan storage:backup --storage=s3

⏰ Scheduled Backup

php artisan storage:backup:schedule --frequency=daily --time=00:00

🧹 Cleanup Backups

php artisan storage:backup:clean --keep-last=10

💡 Folder Suggestions

php artisan storage:backup --suggest

🔧 Options

🔄 Backup

Option Description
--folders List of folders to backup
--storage Storage type to use (local, s3, ftp, sftp, gcs, azure)
--schedule Enable scheduling
--frequency Backup frequency (hourly, daily, weekly, monthly)
--time Time for daily/weekly/monthly backup
--day Day for weekly/monthly backup
--keep-last Number of backups to keep
--keep-days Number of days to keep backups
--keep-size Maximum size of backups to keep
--suggest Show folder suggestions

⏰ Schedule

Option Description
--folders List of folders to backup
--storage Storage type to use (local, s3, ftp, sftp, gcs, azure)
--frequency Backup frequency (hourly, daily, weekly, monthly)
--time Time for daily/weekly/monthly backup
--day Day for weekly/monthly backup
--keep-last Number of backups to keep
--keep-days Number of days to keep backups
--keep-size Maximum size of backups to keep

🧹 Clean

Option Description
--keep-last Number of backups to keep
--keep-days Number of days to keep backups
--keep-size Maximum size of backups to keep
--storage Storage type to use (local, s3, ftp, sftp, gcs, azure)

⚙️ Configuration

💾 Storage

'default_storage' => env('STORAGE_BACKUP_DEFAULT_STORAGE', 'local'),
'storages' => [
    'local' => [
        'driver' => 'local',
        'root' => storage_path('app/backups'),
    ],
    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL'),
        'endpoint' => env('AWS_ENDPOINT'),
        'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
    ],
    'ftp' => [
        'driver' => 'ftp',
        'host' => env('FTP_HOST'),
        'username' => env('FTP_USERNAME'),
        'password' => env('FTP_PASSWORD'),
        'port' => env('FTP_PORT', 21),
        'root' => env('FTP_ROOT', ''),
        'passive' => env('FTP_PASSIVE', true),
        'ssl' => env('FTP_SSL', false),
        'timeout' => env('FTP_TIMEOUT', 30),
    ],
    'sftp' => [
        'driver' => 'sftp',
        'host' => env('SFTP_HOST'),
        'username' => env('SFTP_USERNAME'),
        'password' => env('SFTP_PASSWORD'),
        'port' => env('SFTP_PORT', 22),
        'root' => env('SFTP_ROOT', ''),
        'timeout' => env('SFTP_TIMEOUT', 30),
        'privateKey' => env('SFTP_PRIVATE_KEY'),
        'passphrase' => env('SFTP_PASSPHRASE'),
    ],
    'gcs' => [
        'driver' => 'gcs',
        'project_id' => env('GOOGLE_CLOUD_PROJECT_ID'),
        'key_file' => env('GOOGLE_CLOUD_KEY_FILE'),
        'bucket' => env('GOOGLE_CLOUD_STORAGE_BUCKET'),
        'path_prefix' => env('GOOGLE_CLOUD_STORAGE_PATH_PREFIX'),
        'storage_api_uri' => env('GOOGLE_CLOUD_STORAGE_API_URI'),
    ],
    'azure' => [
        'driver' => 'azure',
        'name' => env('AZURE_STORAGE_NAME'),
        'key' => env('AZURE_STORAGE_KEY'),
        'container' => env('AZURE_STORAGE_CONTAINER'),
        'url' => env('AZURE_STORAGE_URL'),
        'prefix' => env('AZURE_STORAGE_PREFIX'),
    ],
],

⏰ Scheduling

'scheduling' => [
    'enabled' => env('STORAGE_BACKUP_SCHEDULING_ENABLED', false),
    'frequency' => env('STORAGE_BACKUP_SCHEDULING_FREQUENCY', 'daily'),
    'time' => env('STORAGE_BACKUP_SCHEDULING_TIME', '00:00'),
    'day' => env('STORAGE_BACKUP_SCHEDULING_DAY', 'monday'),
],

🧹 Cleanup

'cleanup' => [
    'enabled' => env('STORAGE_BACKUP_CLEANUP_ENABLED', false),
    'keep_last' => env('STORAGE_BACKUP_CLEANUP_KEEP_LAST', 10),
    'keep_days' => env('STORAGE_BACKUP_CLEANUP_KEEP_DAYS', 30),
    'keep_size' => env('STORAGE_BACKUP_CLEANUP_KEEP_SIZE', '10GB'),
],

💡 Suggestions

'suggestions' => [
    'recent' => [
        'enabled' => env('STORAGE_BACKUP_SUGGESTIONS_RECENT_ENABLED', true),
        'days' => env('STORAGE_BACKUP_SUGGESTIONS_RECENT_DAYS', 7),
    ],
    'size' => [
        'enabled' => env('STORAGE_BACKUP_SUGGESTIONS_SIZE_ENABLED', true),
        'min_size' => env('STORAGE_BACKUP_SUGGESTIONS_SIZE_MIN', '100MB'),
    ],
    'type' => [
        'enabled' => env('STORAGE_BACKUP_SUGGESTIONS_TYPE_ENABLED', true),
        'types' => [
            'images' => ['jpg', 'jpeg', 'png', 'gif'],
            'documents' => ['pdf', 'doc', 'docx', 'xls', 'xlsx'],
            'media' => ['mp3', 'mp4', 'avi', 'mov'],
            'config' => ['json', 'yml', 'yaml', 'ini'],
        ],
    ],
    'critical' => [
        'enabled' => env('STORAGE_BACKUP_SUGGESTIONS_CRITICAL_ENABLED', true),
        'folders' => [
            'storage/framework',
            'storage/logs',
            'storage/cache',
            'public/uploads',
        ],
    ],
    'patterns' => [
        'enabled' => env('STORAGE_BACKUP_SUGGESTIONS_PATTERNS_ENABLED', true),
        'names' => [
            'uploads',
            'media',
            'documents',
        ],
    ],
    'permissions' => [
        'enabled' => env('STORAGE_BACKUP_SUGGESTIONS_PERMISSIONS_ENABLED', true),
        'permissions' => [
            'writable' => true,
            'system' => true,
        ],
    ],
    'metadata' => [
        'enabled' => env('STORAGE_BACKUP_SUGGESTIONS_METADATA_ENABLED', true),
        'access' => true,
        'modification' => true,
        'importance' => true,
    ],
],

📓 Changelog

See CHANGELOG.md for details about recent updates.

📝 TODO

  • Implement pattern detection in folder names
  • Add unit and integration tests
  • Improve documentation with advanced usage examples
  • Add support for additional storage types
    • Dropbox
    • OneDrive
  • Implement backup compression
  • Add backup restoration functionality

👨‍💻 Author

Developed by Ibnu Sahid

Contributors: martin-lechene

ibnu-sahid/laravel-storage-backup 适用场景与选型建议

ibnu-sahid/laravel-storage-backup 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 6 次下载、GitHub Stars 达 1, 最近一次更新时间为 2025 年 04 月 09 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 ibnu-sahid/laravel-storage-backup 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 ibnu-sahid/laravel-storage-backup 我们能提供哪些服务?
定制开发 / 二次开发

基于 ibnu-sahid/laravel-storage-backup 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 6
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 9
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 2
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-04-09