Skip to content
forked from verseles/flyclone

PHP wrapper for rclone. Supports Local disk, Dropbox, FTP, SFTP, Google Drive, MEGA, S3 (any compatible) and others. Progress support.

License

Notifications You must be signed in to change notification settings

tomtko/flyclone

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudAtlas\Flyclone

PHP wrapper for rclone

Supports Local disk, Dropbox, FTP, SFTP, Google Drive, MEGA, S3 (any compatible) and others can be easily added via PR.

Progress support.

Installation

composer require cloudatlas/flyclone

Usage

List local files

use CloudAtlas\Flyclone\Rclone;
use CloudAtlas\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

use CloudAtlas\Flyclone\Rclone;
use CloudAtlas\Flyclone\Providers\MegaProvider;

$left_side = new MegaProvider('myserver',[
    'user'=>'[email protected]',
    'pass'=> Rclone::obscure('applesux')
]);

$rclone = new Rclone($left_side);

var_dump($rclone->ls('/docs')); // returns array

Copy from local disk to MEGA

use CloudAtlas\Flyclone\Rclone;
use CloudAtlas\Flyclone\Providers\LocalProvider;
use CloudAtlas\Flyclone\Providers\MegaProvider;

$left_side = new LocalProvider('mydisk'); // name

$right_side = new MegaProvider('myremote',[
    'user'=>'[email protected]',
    '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

use CloudAtlas\Flyclone\Rclone;
use CloudAtlas\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

use CloudAtlas\Flyclone\Rclone;
use CloudAtlas\Flyclone\Providers\LocalProvider;
use CloudAtlas\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
  • Add phpDoc (help wanted)

Contribution

You know how to do that.

License

MIT - 2021

About

PHP wrapper for rclone. Supports Local disk, Dropbox, FTP, SFTP, Google Drive, MEGA, S3 (any compatible) and others. Progress support.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%