devops
5600 yıldız

Laravel Backup

Geliştirici: Spatie

Uygulama dosyalarını ve veritabanlarını yedekleyip uzak sunuculara veya bulut depolamaya aktaran otomasyon paketi.

Kurulum

Composer
composer require spatie/laravel-backup

Dokümantasyon & Kullanım

Markdown

Spatie Laravel Backup

Laravel Backup paketi, uygulamanızın kaynak kodlarını, yüklenen kullanıcı dosyalarını ve veritabanı dökümlerini (MySQL, PostgreSQL, SQLite vb.) sıkıştırılmış bir zip arşivi haline getirip AWS S3, Google Cloud, SFTP veya yerel disklere güvenle aktaran, yedekleme sağlığını izleyen ve e-posta/Slack/Telegram bildirimleri gönderen kapsamlı bir DevOps otomasyon aracıdır.

Neden Tercih Edilmeli?

  • Tam Otomasyon: Cron zamanlayıcısı ile günlük, haftalık veya saatlik otomatik yedekleme planları oluşturulabilir.
  • Akıllı Temizleme (Cleanup Strategy): Eski yedekleri diskte sonsuza kadar biriktirmez; belirlenen kurala göre (son 7 gün, son 4 hafta, son 6 ay vb.) eski arşivleri güvenle siler.
  • Yedekleme Sağlık Kontrolü (Monitor): Yedeklerin düzenli alınıp alınmadığını veya disk boyutunu denetler (backup:monitor).
  • Anlık Bildirimler: Yedekleme başarılı olduğunda ya da başarısızlığa uğradığında Slack, Discord, Mail ve SMS ile uyarır.
  • Parola Koruması: Üretilen zip arşivlerini şifreleyerek veri güvenliğini artırır.

Kurulum

Composer ile paketi projenize dahil edin:

composer require spatie/laravel-backup

Yapılandırma dosyasını yayınlayın:

php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"

Bu işlem config/backup.php dosyasını oluşturur.

Yapılandırma

config/backup.php dosyasında yedeklenecek dosyaları, veritabanlarını ve hedef diskleri belirleyebilirsiniz:

return [
    'backup' => [
        'name' => env('APP_NAME', 'laravel-backup'),
        'source' => [
            'files' => [
                'include' => [
                    base_path(),
                ],
                'exclude' => [
                    base_path('vendor'),
                    base_path('node_modules'),
                    storage_path('framework'),
                ],
            ],
            'databases' => [
                'mysql',
            ],
        ],
        'destination' => [
            'disks' => [
                's3',
                'local',
            ],
        ],
    ],
    'cleanup' => [
        'default_strategy' => [
            'keep_all_backups_for_days' => 7,
            'keep_daily_backups_for_days' => 16,
            'keep_weekly_backups_for_weeks' => 8,
            'keep_monthly_backups_for_months' => 4,
            'keep_yearly_backups_for_years' => 1,
            'delete_oldest_backups_when_using_more_megabytes_than' => 5000,
        ],
    ],
];

Temel Kullanım

1. Manuel Yedek Alma

# Hem dosyaları hem veritabanını yedekle
php artisan backup:run

# Yalnızca veritabanını yedekle (çok daha hızlı)
php artisan backup:run --only-db

# Yalnızca dosyaları yedekle
php artisan backup:run --only-files

2. Eski Yedekleri Temizleme

php artisan backup:clean

3. Yedek Durumunu ve Sağlığını Kontrol Etme

php artisan backup:monitor

4. Zamanlanmış Görev (Cron / Scheduler) Tanımlama

routes/console.php (veya app/Console/Kernel.php) dosyasına zamanlama ekleyin:

use Illuminate\Support\Facades\Schedule;

// Her gece 01:00'de eski yedekleri temizle ve 01:30'da yeni yedek al
Schedule::command('backup:clean')->daily()->at('01:00');
Schedule::command('backup:run')->daily()->at('01:30');

// Her sabah yedek sağlığını denetle
Schedule::command('backup:monitor')->daily()->at('08:00');