cloudatlas / flyclone
This package is abandoned and no longer maintained.
The author suggests using the https://github.com/verseles/flyclone package instead.
PHP wrapper for rclone
v2.1.0
2024-07-07 02:04 UTC
Requires
- php: >=8.0
- ext-json: *
- spatie/once: ^3.0.1
- symfony/process: ^7
Requires (Dev)
- enlightn/security-checker: ^1.9
- phpunit/phpunit: ^11
README
Verseles\flyclone
PHP wrapper for rclone
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
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
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
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
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
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:
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