Skip to content

$ cat meet-laravel-rclone.md

Meet Laravel Rclone 🚀

Learn how Laravel Rclone, a package wrapping rclone, lets you sync or move large numbers of files between Laravel storage disks such as local and S3. The article covers installation, a fluent API with progress and transfer options, and an example backup command.

geisi.dev25 Sept 2025 · 2 min read · summary
Read on geisi.dev ↗
Do you ever had the need to sync or move a large number of files between multiple Laravel storage file systems? We built a Laravel package on top of rclone to solve this. We’re thrilled to introduce Laravel Rclone — a brand-new Laravel package that brings the raw power of rclone into your Laravel projects. Moving or syncing large amounts of files across storage systems has always been tricky in Laravel. Sure, the filesystem abstraction is powerful, but when it comes to bulk transfers it can be slow, clunky, and resource-intensive. That’s where Laravel Rclone comes in: a blazing-fast, developer-friendly wrapper around rclone that feels 100% Laravel-native. Why Laravel Rclone? ⚡ Performance that scales — powered by rclone, trusted for high-volume file ops 🔄 Sync & move between any Laravel-supported storage disks (local, S3, FTP, …) 🎯 Zero learning curve — Fluent API 🛠 Perfect for migrations, backups & big file operations Installation composer require innoge/laravel-rclone Publish the configuration php artisan vendor:publish --tag=rclone-config Usage Want to sync your local storage with S3? Just do this: use InnoGE\LaravelRclone\Facades\Rclone; // Simple sync Rclone::source('local') ->target('s3') ->sync(); // With progress & options Rclone::source('local') ->target('s3') ->withProgress() ->transfers(16) ->checkers(8) ->getOutputUsing(fn($type, $output) => Log::info("Rclone: {$output}")) ->sync(); Or create a backup command for that: use InnoGE\LaravelRclone\Facades\Rclone; class BackupCommand extends Command { public function handle(): int { $this->info('Starting backup...'); $result = Rclone::source('local') ->target('s3', 'backups/' . now()->format('Y-m-d')) ->withProgress() ->getOutputUsing(fn(string $type, string $output) => $this->line($output)) ->sync(); return $result->isSuccessful() ? 0 : 1; } } Get Started Today Handling massive file migrations, syncing environments, or moving entire datasets between disks has never been easier. Laravel Rclone takes the hassle out of file operations and makes it feel like it was built into Laravel from day one. 👉 github.com/InnoGE/laravel-rclone

source

This is a summary of an article first published by geisi.dev. The full piece is on their site.

Open original