verseles / flyclone

PHP wrapper for rclone. Supports Local disk, Dropbox, FTP, SFTP, Google Drive, MEGA, S3 (any compatible) and others. Progress support.
Other
71 stars 5 forks source link
cloudatlas disk dropbox flysystem hacktoberfest php php-wrapper rclone wrapper

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

composer require verseles/flyclone

usage

list local files ```php 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 ```
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.

testing

install docker and docker compose, then run:

cp .env.example .env
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