tobischulz / rsync-backup-server
为Laravel自建的rsync备份服务器
Requires
- php: ^7.3
- illuminate/console: ^6.0|^7.0|^8.0
- illuminate/contracts: ^6.0|^7.0|^8.0
- illuminate/events: ^6.0|^7.0|^8.0
- illuminate/filesystem: ^6.0|^7.0|^8.0
- illuminate/notifications: ^6.0|^7.0|^8.0
- illuminate/support: ^6.0|^7.0|^8.0
- spatie/ssh: ^1.4
- symfony/process: ^5.1
Requires (Dev)
- orchestra/testbench: 5.*|6.*
- pestphp/pest: ^0.3.9
- phpunit/phpunit: ^9.3.10
This package is auto-updated.
Last update: 2024-09-30 01:36:12 UTC
README
此包让您可以使用自己的Laravel项目在自托管服务器上处理所有离站备份。将源添加到数据库,并通过Artisan命令调度新的备份任务。Laravel队列系统将处理所有步骤以备份您的数据库或文件。
安装
使用Composer安装此包
composer require tobischulz/rsync-backup-server
发布包文件
php artisan vendor:publish --provider="TobiSchulz\RsyncBackupServer\RsyncBackupServerProvider"
在config/filesystems.php
中添加备份目的地存储磁盘,用于存储所有备份文件。驱动程序必须是local
。
'disks' => [ //... 'my_backup_disk' => [ 'driver' => 'local', // must be local 'root' => '/Volumes/Share/rsync-backups', // your own path ], //... ]
将备份调度命令添加到app\Console\Kernel.php
/** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { $schedule->command('backups:dispatch')->hourly(); }
在.env文件中设置您的队列系统
QUEUE_CONNECTION=database // redis for horizon
此包应与所有Laravel队列系统兼容。目前我只测试了数据库。请确保已运行迁移以使用数据库队列驱动程序。
您可以使用以下Artisan命令发布队列迁移:php artisan queue:table
使用
创建第一个源
$source = SourceServer::create([ 'name' => 'mySource', // source name 'host' => '123.123.123.123', // ip of the source server 'ssh_user' => 'forge', // ssh user on the source server 'ssh_private_key_path' => '~/.ssh/id_rsa', // path to the ssh private key from backup server 'ssh_port' => 22, // ssh port, default 22 'backup_hour' => 5, // this sets the schedule for 5am UTC 'source_path' => '~/backups/*', // folder on source to backup 'destination_disk' => 'my_backup_disk', // disk we created in /config/filesystems.php 'type' => 'rsync' // set 'rsync' or 'backup' ]);
backup_hour
设置每天应安排备份的小时。app\Console\Kernel.php
中的调度命令将读取数据库中所有源服务器,其backup_hour与当前时间相等,并调度新的备份任务。
ssh_private_key_path
您需要将备份服务器的公钥添加到每个您想要连接并从中备份的源服务器。在此配置中,您需要设置备份服务器私钥,该私钥将用于连接到源服务器。使用此私钥数据库路径,您可以为每个源服务器使用不同的密钥。
type
此包有两种备份类型。默认的backup
将在每次备份运行时创建一个新的文件夹。这将增加每次备份的磁盘使用量,但可以通过cleanup
命令来处理。
第二种类型是rsync
。此类型将同步源文件夹与目标文件夹。
手动调度备份
您可以通过使用Artisan命令php artisan backup:run mySource
手动调度新的备份任务,其中mySource是数据库中的源名称。
调度备份
备份任务将根据您的源服务器上的backup_hour
配置进行调度。这由添加到app\Console\Kernel.php
的Artisan调度命令php artisan backups:dispatch
处理。
安全性
如果您发现任何与安全性相关的问题,请通过电子邮件tobias@byte.software与作者联系,而不是使用问题跟踪器。
鸣谢
此包受到了即将推出的包spatie/laravel-backup-server的很大启发,由Spatie制作。
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。