Laravel 7.x ile veri tabanımızın günlük, haftalık veya aylık otomatik yedeklerini oluşturabiliyoruz. Şimdi sıfırdan laravel kurulumu ile başlayarak nasıl otomatik yedek alabileceğimizi görelim.
1. Laravel Kurulumu:
Aşağıdaki komut ile laravel projemizi oluşturuyoruz:
composer create-project --prefer-dist laravel/laravel blog2. Command Oluşturma:
Bu aşamada artisan komutu ile command oluşturuyoruz:
php artisan make:command DatabaseBackUpArtisan komutumuz ile birlikte app/ Console/ Commands/ DatabaseBackUp.php dosyamızı oluşturduk. Şimdi günlük yedeklemeyi yapacağımız kodu ekleyelim:
namespace AppConsoleCommands; use IlluminateConsoleCommand; use CarbonCarbon; class DatabaseBackUp extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'database:backup'; /** * The console command description. * * @var string */ protected $description = 'Command description'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return int */ public function handle() { $filename = "backup-" . Carbon::now()->format('Y-m-d') . ".gz"; $command = "mysqldump --user=" . env('DB_USERNAME') ." --password=" . env('DB_PASSWORD') . " --host=" . env('DB_HOST') . " " . env('DB_DATABASE') . " | gzip > " . storage_path() . "/app/backup/" . $filename; $returnVar = NULL; $output = NULL; exec($command, $output, $returnVar); } }3. Backup Dosyasının Oluşturulması:
Bu aşamada backup dosyalarımızı barındıracağımız klasorümüzü storage içinde oluşturuyoruz. Dosya yolumuzun şu şekilde olması gerekiyor: storage/app/backup. Dosya için tüm izinlere sahip olduğunuzdan emin olmanız gerekir.
4. Yedekleme Zamanlamasının Oluşturulması:
Bu aşamada daha önce oluşturduğumuz backup komutunun zamanlamasını yapıyoruz. Bunun için kernel.php dosyamıza aşağıdaki kodu ekliyoruz:
namespace AppConsole; /** use IlluminateConsole Scheduling Schedule; use IlluminateFoundation Console Kernel as ConsoleKernel; /** class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ 'AppConsoleCommands DatabaseBackUp' ]; /** * Define the application's command schedule. * * @param IlluminateConsoleScheduling Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { $schedule->command('database:backup')->daily(); } /** * Register the commands for the application. * * @return void */ protected function commands() { $this->load(__DIR__.'/Commands'); require base_path('routes/console.php' ); } }Evet yedekleme işlemimizi tamamladık. Şimdi sistemimizin çalıştığını kontrol etmek için aşağıdaki komutu uygulayarak yedek dosyamızı kontrol edeceğiz:
php artisan database:backupGördüğünüz gibi laravel ile otomatik veritabanı yedeği oluşturmak bu kadar kolay. İsterseniz günlük, haftalık veya aylık otomatik yedek oluşturabilirsiniz.