kopia lustrzana https://github.com/pixelfed/pixelfed
				
				
				
			
		
			
				
	
	
		
			77 wiersze
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			77 wiersze
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
 | 
						|
namespace App\Console\Commands;
 | 
						|
 | 
						|
use Illuminate\Http\File;
 | 
						|
use Illuminate\Console\Command;
 | 
						|
use Illuminate\Support\Facades\Storage;
 | 
						|
use Spatie\Backup\BackupDestination\BackupDestination;
 | 
						|
 | 
						|
class BackupToCloud extends Command
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * The name and signature of the console command.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    protected $signature = 'backup:cloud';
 | 
						|
 | 
						|
    /**
 | 
						|
     * The console command description.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    protected $description = 'Send backups to cloud storage';
 | 
						|
 | 
						|
    /**
 | 
						|
     * Create a new command instance.
 | 
						|
     *
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    public function __construct()
 | 
						|
    {
 | 
						|
        parent::__construct();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Execute the console command.
 | 
						|
     *
 | 
						|
     * @return int
 | 
						|
     */
 | 
						|
    public function handle()
 | 
						|
    {
 | 
						|
		$localDisk = Storage::disk('local');
 | 
						|
		$cloudDisk = Storage::disk('backup');
 | 
						|
		$backupDestination = new BackupDestination($localDisk, '', 'local');
 | 
						|
 | 
						|
		if(
 | 
						|
			empty(config('filesystems.disks.backup.key')) ||
 | 
						|
			empty(config('filesystems.disks.backup.secret')) ||
 | 
						|
			empty(config('filesystems.disks.backup.endpoint')) ||
 | 
						|
			empty(config('filesystems.disks.backup.region')) ||
 | 
						|
			empty(config('filesystems.disks.backup.bucket'))
 | 
						|
		) {
 | 
						|
			$this->error('Backup disk not configured.');
 | 
						|
			$this->error('See https://docs.pixelfed.org/technical-documentation/env.html#filesystem for more information.');
 | 
						|
			return Command::FAILURE;
 | 
						|
		}
 | 
						|
 | 
						|
		$newest = $backupDestination->newestBackup();
 | 
						|
		$name = $newest->path();
 | 
						|
		$parts = explode('/', $name);
 | 
						|
		$fileName = array_pop($parts);
 | 
						|
		$storagePath = 'backups';
 | 
						|
		$path = storage_path('app/'. $name);
 | 
						|
		$file = $cloudDisk->putFileAs($storagePath, new File($path), $fileName, 'private');
 | 
						|
		$this->info("Backup file successfully saved!");
 | 
						|
		$url = $cloudDisk->url($file);
 | 
						|
		$this->table(
 | 
						|
			['Name', 'URL'],
 | 
						|
			[
 | 
						|
				[$fileName, $url]
 | 
						|
			],
 | 
						|
		);
 | 
						|
		return Command::SUCCESS;
 | 
						|
    }
 | 
						|
}
 |