cloudatlas / flyclone
v2.1.0
2024-07-07 02:04 UTC
Requires
- php: >=8.0
- ext-json: *
- spatie/once: ^3.0.1
- symfony/process: ^7
Requires (Dev)
- enlightn/security-checker: ^1.9
- phpunit/phpunit: ^11
README
Verseles\flyclone
PHP 对 rclone 的封装
支持 本地 磁盘、Dropbox、FTP、SFTP、Google Drive、Mega、S3、B2 (任何兼容) 以及其他,可以通过 pr 简单添加。
进度支持。
安装
composer require verseles/flyclone
使用
列出本地文件
use Verseles\Flyclone\Rclone; use Verseles\Flyclone\Providers\LocalProvider; $left_side = new LocalProvider('mydisk'); // nickname $rclone = new Rclone($left_side); var_dump($rclone->ls('/home/')); // returns array
列出 Mega 服务器上的文件
use Verseles\Flyclone\Rclone; use Verseles\Flyclone\Providers\MegaProvider; $left_side = new MegaProvider('myserver',[ 'user'=>'johnivy@pear.com', 'pass'=> Rclone::obscure('applesux') ]); $rclone = new Rclone($left_side); var_dump($rclone->ls('/docs')); // returns array
从本地磁盘复制到 Mega
use Verseles\Flyclone\Rclone; use Verseles\Flyclone\Providers\LocalProvider; use Verseles\Flyclone\Providers\MegaProvider; $left_side = new LocalProvider('mydisk'); // name $right_side = new MegaProvider('myremote',[ 'user'=>'your@email.com', 'pass'=> Rclone::obscure('4ppl35u*') ]); $rclone = new Rclone($left_side, $right_side); $rclone->copy('/home/appleinc/index.html', '/docs'); // always true, otherwise throws error
从本地磁盘移动到同一本地磁盘
use Verseles\Flyclone\Rclone; use Verseles\Flyclone\Providers\LocalProvider; $samedisk = new LocalProvider('mydisk'); // name $rclone = new Rclone($samedisk); $rclone->copy('/home/appleinc/index.html', '/home/www/'); // always true, otherwise throws error
每秒更新一次进度复制到 Dropbox
use Verseles\Flyclone\Rclone; use Verseles\Flyclone\Providers\LocalProvider; use Verseles\Flyclone\Providers\DropboxProvider; $left_side = new LocalProvider('mydisk'); // nickname $right_side = new DropboxProvider('myremote', [ 'client_id' => 'your_dropbox_client_id', 'client_secret' => 'your_dropbox_client_secret', 'token' => 'your_dropbox_token', ]); $rclone = new Rclone($left_side, $right_side); $rclone->copy('/home/appleinc/index.html', '/home/www/', [], static function ($type, $buffer) use ($rclone) { var_dump($rclone->getProgress()); });
提示 - 使用前请阅读。
- 当然,你需要了解 rclone 的工作原理。
- rclone 类和提供者类始终支持在 rclone 文档 中列出的任何标志,通常作为第三个参数。但是
- 在此库中传递的任何标志、参数或选项,如
--parameter-here
,都是类似于['parameter-here'='value', 'max-depth' => 3, 'any'=>'1']
的数组 - 如果你只告知一个提供者(“左侧”),在
copy
/move
等命令中,我们假设 “右侧” 与相同的 “左侧” 提供者相同。这意味着复制/移动到同一磁盘。 - 目前我们没有很好的文档,所以如果你有任何疑问,请始终打开一个 issue。请记住要详细描述。
进行中 待办事项
-
添加进度支持 -
添加超时支持 -
添加更多命令 -
添加测试-
使用 docker 和 docker compose 进行测试
-
- 发送元数据详情,如文件 ID,到一些存储系统如 Google Drive
测试
安装 docker 和 docker compose,然后运行
cp .env.example .env make
还有其他测试(test_all, test_gdrive, 等),但你需要正确填写
.env
文件。
贡献
你知道如何做。