zenstruck/backup-bundle

Symfony Bundle 用于封装备份命令

资助包维护!
kbond

安装数量: 7,615

依赖者: 0

建议者: 0

安全: 0

星标: 16

关注者: 4

分支: 3

开放问题: 2

类型:symfony-bundle

v2.2.0 2024-02-19 15:56 UTC

README

此包允许在 Symfony 应用程序中创建和管理备份。它是 zenstruck/backup 的封装。

安装

  1. 使用 composer 安装
composer require zenstruck/backup-bundle
  1. 启用包:如果您不使用 Symfony Flex,则需要此步骤。

    // config/bundles.php
    
    return [
            // ...
            Zenstruck\BackupBundle\ZenstruckBackupBundle::class => ['all' => true],
        ];

配置

在您的 config/packages/zenstruck_backup.yaml 中添加至少一个来源、命名、处理器、目的地以及一个配置文件。

示例

zenstruck_backup:
    sources:
        database:
            mysqldump:
                database: my_database
        files:
            rsync:
                source: "%kernel.project_dir%/public/files"
                additional_options:
                    - --exclude=_cache/
    namers:
        daily:
            timestamp:
                format: d
                prefix: mysite-
        snapshot:
            timestamp:
                prefix: mysite-
    processors:
        zip: { zip: ~ }
    destinations:
        s3:
            s3cmd:
                bucket: "s3://foobar/backups"
    profiles:
        daily:
            scratch_dir: "%kernel.project_dir%/cache/backup"
            sources: [database, files]
            namer: daily
            processor: zip
            destinations: [s3]

命令

运行备份命令

Usage:
 zenstruck:backup:run [--clear] [<profile>]

Arguments:
 profile  The backup profile to run (leave blank for listing)

Options:
 --clear  Set this flag to clear scratch directory before backup

注意:

  1. 添加 -vv 以查看日志。
  2. 对于长时间运行的备份,可能需要在您的 bin/console 中增加 memory_limit
  3. 在没有配置文件的情况下运行命令将列出可用的配置文件。

示例(使用上述配置)

  • s3://foobar/backups/mysite-{day-of-month} 创建备份

      bin/console zenstruck:backup:run daily
    
  • s3://foobar/backups/mysite-{YYYYMMDDHHMMSS} 创建备份

      bin/console zenstruck:backup:run snapshot
    

列出现有备份

Usage:
  zenstruck:backup:list [<profile>]

Arguments:
  profile  The backup profile to list backups for (leave blank for listing)

注意:在没有配置文件的情况下运行命令将列出可用的配置文件。

完整的默认配置

zenstruck_backup:
    namers:

        # Prototype
        name:
            simple:
                name:                 backup
            timestamp:
                format:               YmdHis
                prefix:               ''
                timezone:             ~
    processors:

        # Prototype
        name:
            zip:
                options:              '-r'
                timeout:              300
            gzip:
                options:              '-czvf'
                timeout:              300
    sources:

        # Prototype
        name:
            mysqldump:
                database:             ~ # Required
                host:                 ~
                user:                 root
                password:             null
                ssh_host:             null
                ssh_user:             null
                ssh_port:             22
                timeout:              300
            rsync:
                source:               ~ # Required
                timeout:              300
                additional_options:   []
                default_options:

                    # Defaults:
                    - -acrv
                    - --force
                    - --delete
                    - --progress
                    - --delete-excluded
    destinations:

        # Prototype
        name:
            stream:
                directory:            ~ # Required
            flysystem:
                filesystem_service:   ~ # Required
            s3cmd:
                bucket:               ~ # Required, Example: s3://foobar/backups
                timeout:              300
    profiles:

        # Prototype
        name:
            scratch_dir:          '%kernel.cache_dir%/backup'
            sources:              [] # Required, can be a string
            namer:                ~  # Required
            processor:            ~  # Required
            destinations:         [] # Required, can be a string