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.
composer require cloudatlas/flyclone
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
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
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
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
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());
});
- 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.
-
Add progress support -
Add timeout support -
Add more commands -
Add tests - Add phpDoc (help wanted)
You know how to do that.
MIT - 2021