项目作者: cloudatlasid

项目描述 :
PHP wrapper for rclone. Supports Local disk, Dropbox, FTP, SFTP, Google Drive, MEGA, S3 (any compatible) and others. Progress support.
高级语言: PHP
项目地址: git://github.com/cloudatlasid/flyclone.git
创建时间: 2020-06-02T03:19:32Z
项目社区:https://github.com/cloudatlasid/flyclone

开源协议:Other

下载


Verseles\flyclone

PHP wrapper for rclone

GitHub Actions Workflow Status

supports local disk, dropbox, ftp, sftp, google drive, mega, s3, b2 (any compatible) and others can be easily added via pr.

progress support.





installation

```shell script
composer require verseles/flyclone

  1. ## usage
  2. <details open><summary>list local files</summary>
  3. ```php
  4. use Verseles\Flyclone\Rclone;
  5. use Verseles\Flyclone\Providers\LocalProvider;
  6. $left_side = new LocalProvider('mydisk'); // nickname
  7. $rclone = new Rclone($left_side);
  8. var_dump($rclone->ls('/home/')); // returns array

list files from mega server

php 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

copy from local disk to mega

php 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

move from local disk to the same local disk

php 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

copy to dropbox with progress every sec

php 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()); });

tips - read before use.

  • of course, you need known how rclone works.
  • rclone class and providers classes always support any flag listed at rclone documentation, often as 3rd argument. but
  • any flag, parameter or option passed like --parameter-here, in this lib is a array like ['parameter-here'='value', 'max-depth' => 3, 'any'=>'1']
  • if you inform only one provider (‘left side’), in commands like copy/move we assume ‘right side’ as the same ‘left side’ provider. which means a copying/moving to the same disk.
  • we don’t have a great doc for now so open a issue always you have a doubt. remember to be descriptful.

    wip to-do

  • add progress support
  • add timeout support
  • add more commands
  • add tests
    • use docker and docker compose for tests
  • send meta details like file id in some storage system like google drive

testing

install docker and docker compose, then run:

  1. cp .env.example .env
  2. make

there are others tests (test_all, test_gdrive, etc), but you’ll need fill .env file properly.

contribution

you know how to do that.

license

Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International