gvozdb/dumper

0.3.4 2022-02-08 05:17 UTC

This package is auto-updated.

Last update: 2024-09-08 10:49:29 UTC


README

服务器备份库。

  • 支持 MySQL
  • 压缩为 Zip
  • 上传到 Яндекс.Диск

上传内容

  • 拥有 dumper.yaml 配置的用户
  • 文件夹 /root//etc/
  • 服务器日志

安装

$ composer require gvozdb/dumper

使用

创建 cron.php 文件

use Gvozdb\Dumper;
require __DIR__ . '/vendor/autoload.php';
try {
    $config = new Dumper\Config\Load(__DIR__ . '/config.yaml');
    $backup = new Dumper\Backup($config);
    $backup->run();
} catch (Exception $e) {
    print_r($e->getMessage() . PHP_EOL);
}

config.yaml

应用程序配置文件。

#
main:
    prefix: "%Y%m%d-" # префикс для названия архивов
    clean_logs: true # очищать старые логи в директории логов path.log
    progress_bar: false # показывать прогресс-бар в терминале

# Длительность хранения бекапов
expires:
    short_step: 1 # шаг, кол-во дней
    short_max_days: 4 # максимальный срок хранения (дней)
    long_step: 30 # шаг, кол-во дней
    long_max_days: 120 # максимальный срок хранения (дней)

#
path:
    tmp: '/tmp/dumper/%Y%m%d/' # временная папка на сервере
    users: '/var/www/' # директория с юзерами, файлы которых нужно бекапить
    root: '/root/' # директория root
    etc: '/etc/' # директория etc
    log: '/var/log/' # директория серверных логов

#
compressor:
    class: 'zip' # zip или zip =)
    compress: 7 # 1 – быстрая компрессия; 9 – лучшая компрессия
    split: 209715200 # разбивать архив на файлы по N байт
    password: '' # пароль на архив

#
storages:
    # Upload to YandexDisk
    YandexDisk:
        token: 'AQAAAAABEJ2-AAVH0EIr79Yz4E5dpd-7nhV1W18' # api токен хранилища
        path: 'disk:/Dumper/ServerIP/%Y%m%d/' # папка в облаке, где хранить бекапы

#
logs:
    enabled: true #
    title: '' # title for logs
    notify:
        # Print to console
        Console:
            path: 'php://stdout' #
            #level: 'info' #
            #format: "[%datetime%] [%level_name%] > %message%\n" #
            #dateFormat: 'd.m.Y H:i:s' #

        # Write to file
        File:
            path: './log/%Y%m%d.log' #
            #level: 'info' #
            #format: "[%datetime%] [%level_name%] > %message%\n" #
            #dateFormat: 'd.m.Y H:i:s' #

        # Send to email
        Email:
            host: '' #
            port: 465 #
            encryption: 'ssl' #
            username: '' #
            password: '' #
            subject: '[%d.%m.%Y] Dumper Report' #
            from: '' #
            to: '' #
            #level: 'info' #
            #format: "[%datetime%] [%level_name%] > %message%\n" #
            dateFormat: 'H:i:s' #

        # Send to telegram chat
        Telegram:
            token: '' #
            chat: '' #
            #level: 'info' #
            #format: "[%datetime%] [%level_name%] > %message%\n" #
            dateFormat: 'H:i:s' #

放置在 cron.php 所在目录

dumper.yaml

用户配置文件。

enabled: true # включить
compressor.password: '' # пароль на архив
#
database:
    type: 'mysql'
    port: 3306
    host: 'localhost'
    name: 'dbname'
    user: 'dbuser'
    pass: 'dbpassword'
#
exclude: [
    '/www/core/cache/*',
  ]

放置在用户根目录

致谢

许可

MIT 许可证 (MIT)。请参阅 许可证文件 以获取更多信息。