diff --git a/app/Console/Commands/CloudMediaMigrate.php b/app/Console/Commands/CloudMediaMigrate.php new file mode 100644 index 000000000..b17214ee4 --- /dev/null +++ b/app/Console/Commands/CloudMediaMigrate.php @@ -0,0 +1,79 @@ +error('Cloud storage not enabled. Exiting...'); + return; + } + + $limit = $this->option('limit'); + $hugeMode = $this->option('huge'); + + if($limit > 500 && !$hugeMode) { + $this->error('Max limit exceeded, use a limit lower than 500 or run again with the --huge flag'); + return; + } + + $bar = $this->output->createProgressBar($limit); + $bar->start(); + + Media::whereNot('version', '4') + ->where('created_at', '<', now()->subDays(2)) + ->whereRemoteMedia(false) + ->whereNotNull(['status_id', 'profile_id']) + ->whereNull(['cdn_url', 'replicated_at']) + ->orderByDesc('size') + ->take($limit) + ->get() + ->each(function($media) use($bar) { + if(Storage::disk('local')->exists($media->media_path)) { + $this->totalSize = $this->totalSize + $media->size; + MediaStorageService::store($media); + } + $bar->advance(); + }); + + $bar->finish(); + $this->line(' '); + $this->info('Finished!'); + if($this->totalSize) { + $this->info('Uploaded ' . PrettyNumber::size($this->totalSize) . ' of media to cloud storage!'); + $this->line(' '); + $this->info('These files are still stored locally, and will be automatically removed.'); + } + return Command::SUCCESS; + } +}