cloudatlas/flyclone

此包已被弃用且不再维护。作者建议使用 https://github.com/verseles/flyclone 包。

PHP 对 rclone 的封装

v2.1.0 2024-07-07 02:04 UTC

README

Verseles\flyclone

PHP 对 rclone 的封装

GitHub Actions Workflow Status

支持 本地 磁盘、DropboxFTPSFTPGoogle DriveMegaS3B2 (任何兼容) 以及其他,可以通过 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 文件。

贡献

你知道如何做。

许可

知识共享署名-非商业性使用-相同方式共享 4.0 国际