sykez / laravel-storage-copy
Laravel Artisan command for copying files between Laravel Filesystem/Storage disks.
Installs: 6 018
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 1
Forks: 2
Open Issues: 0
pkg:composer/sykez/laravel-storage-copy
Requires
- php: ^7.4 || ^8.0
- illuminate/console: 5.5 - 9
- illuminate/filesystem: 5.5 - 9
- illuminate/log: 5.5 - 9
- illuminate/support: 5.5 - 9
- league/flysystem: ~1.0 || ^3.0
- league/flysystem-aws-s3-v3: ~1.0 || ^3.0
README
Laravel Artisan command for copying files between Laravel Filesystem/Storage disks.
Install
composer require sykez/laravel-storage-copy
Usage
storage:copy [options] [--] <source> <destination>
Arguments
source Name of the Filesystem disk you want to copy from
destination Name of the Filesystem disk you want to copy to
Options
-d, --delete Delete files on destination disk which aren't on the source disk
-o, --overwrite If files already exist on destination disk, overwrite them instead of skip
-nv, --novisibility Skip getting visibilty on the source
-x, --exclude Regex filter for excluding files
-l, --log Log all actions into Laravel log
-O, --output Output all actions
Examples
-
Copy
publicdisk tos3. By default, existing files will be skipped if modified time is same.php artisan storage:copy public s3 -
Copy
s3disk tocustom.deleteoption would delete any files on the destination disk (custom), which aren't in the source disk (s3).overwriteoption would overwrite the files if exists on the destination disk instead of skipping.php artisan storage:copy --delete --overwrite s3 custom -
Copy from S3 bucket to another S3 buket
Since there is only one S3 disk in Laravel by default, in order to copy one bucket to another, another disk needs to be added intoconfig/filesystems.php:'disks' => [ // ... other disks 'another-s3' => [ 'driver' => 's3', 'key' => env('ANOTHER_AWS_ACCESS_KEY_ID'), 'secret' => env('ANOTHER_AWS_SECRET_ACCESS_KEY'), 'region' => env('ANOTHER_AWS_DEFAULT_REGION'), 'bucket' => env('ANOTHER_AWS_BUCKET'), 'url' => env('ANOTHER_AWS_URL'), ], ],After adding the new disk's details (
ANOTHER_AWS) into.env,s3disk can now be copied toanother-s3disk:php artisan storage:copy -od s3 another-s3 -
Log and debugging
logoption would log all actions taken on the files into Laravel's log, whiledebugoption would output these actions into the console instead.php artisan storage:copy --log --output s3 rackspace