This package is forked from the original league/flysystem-replicate-adapter
written by @frankdejonge. The objective is to provide support for Flysystem V2 and V3
If you use Flysystem 1.x, use ajgl/flysystem-replicate 1.x
composer require ajgl/flysystem-replicate
$source = new League\Flysystem\AwsS3V3\AwsS3V3Adapter(...);
$replica = new League\Flysystem\Local\LocalFilesystemAdapter(...);
$adapter = new Ajgl\Flysystem\Replicate\ReplicateFilesystemAdapter($source, $replica);
What's cool about this is that you can chain them to replicate to more then 1 other storage system.
$adapter = new Ajgl\Flysystem\Replicate\ReplicateFilesystemAdapter($source, $replica);
$anotherReplica = new League\Flysystem\WebDAV\WebDAVAdapter(...);
$adapter = new Ajgl\Flysystem\Replicate\ReplicateFilesystemAdapter($adapter, $anotherReplica);
If you have league/flysystem-bundle
installed in your Symfony application,
you have to define the replicate adapter service referencing your source and replica storages.
# config/services.yaml
services:
app.replicate.storage:
class: Ajgl\Flysystem\Replicate\ReplicateFilesystemAdapter
arguments: ['@flysystem.adapter.source.storage', '@flysystem.adapter.replica.storage']
Then, you have to define a custom adapter in the league/flysystem-bundle
configuration.
# config/packages/flysystem.yaml
flysystem:
storages:
source.storage:
adapter: 'local'
options:
directory: '%kernel.project_dir%/var/storage'
replica.storage:
adapter: 'aws'
options:
client: 'aws.client'
bucket: 'storage'
replicate.storage:
adapter: 'app.replicate.storage'