@if ($pesanSukses) @endif @if ($pesanError) @endif

Perlindungan Data

{{ $health['label'] }}

Backup & Restore

Pantau tiga lapis perlindungan dan kelola arsip pemulihan.

Backup terakhir berhasil

{{ $health['last_success_at']?->translatedFormat('d M Y H:i') ?? 'Belum pernah' }}

{{ $health['last_success_name'] ?? 'Tidak ada berkas' }}

Backup otomatis

{{ $health['automatic_enabled'] ? 'Aktif · '.$health['automatic_time'] : 'Belum diaktifkan' }}

{{ $health['automatic_enabled'] ? 'Dijalankan oleh scheduler hosting.' : 'Aktifkan scheduler di hosting.' }}

Salinan off-site

{{ $health['offsite_enabled'] ? 'Aktif · '.strtoupper($health['offsite_disk']) : 'Belum dikonfigurasi' }}

{{ $health['offsite_last_success_at'] ? 'Tersalin '.$health['offsite_last_success_at']->diffForHumans() : 'Belum ada salinan di luar server.' }}

@if ($health['last_error'] || $health['offsite_last_error'])
{{ $health['offsite_last_error'] ? 'Off-site: '.$health['offsite_last_error'] : 'Backup: '.$health['last_error'] }}
@endif
@if ($snapshotAktif)

Snapshot aktif: {{ $snapshotAktif['backup_name'] }} @if (!empty($snapshotAktif['backup_created_at'])) · data backup dibuat {{ \Illuminate\Support\Carbon::parse($snapshotAktif['backup_created_at'])->translatedFormat('d M Y H:i') }} @endif

Dipulihkan {{ \Illuminate\Support\Carbon::parse($snapshotAktif['restored_at'])->diffForHumans() }} @if (!empty($snapshotAktif['restored_by'])) oleh {{ $snapshotAktif['restored_by'] }} @endif. Transaksi baru masuk ke snapshot ini dan tidak otomatis digabungkan jika database dipulihkan ke backup lain.

Jadikan Data Operasional Utama
@endif

Kesiapan mesin backup

{{ $kesiapan['siap'] ? 'Database utama dan layanan backup siap digunakan.' : $kesiapan['pesan'] }}

Lihat detail

Database operasional

{{ $snapshotAktif ? 'Database aktif berasal dari hasil restore. Rincian dan tindakan pengamanan ditampilkan pada peringatan di atas.' : 'Database utama aktif dan tidak memiliki penanda hasil restore melalui aplikasi.' }}

Kesiapan backup

{{ $kesiapan['pesan'] }}

@if ($kesiapan['siap'])

Driver {{ strtoupper($kesiapan['driver']) }} · {{ ($kesiapan['mode'] ?? 'pdo') === 'cli' ? 'MySQL CLI' : 'PHP/PDO' }}

@endif

Cakupan backup dan pemulihan

Backup mencakup database dan berkas privat. Restore mengembalikan database, sedangkan berkas privat tidak ditimpa.

Sebelum restore, sistem membuat backup pengaman, memeriksa versi struktur, lalu menjalankan migration yang tertinggal.

Arsip backup

Pilih salinan yang sehat dan paling dekat dengan waktu kejadian.

@forelse ($backups as $backup) @empty @endforelse
Nama berkas Ukuran Dibuat pada Kompatibilitas Tindakan
{{ $backup['nama'] }}
{{ $backup['ukuran_label'] }} {{ $backup['dibuat_at']->translatedFormat('d M Y H:i') }} @php $compat = $backup['kompatibilitas']; $compatClass = match ($compat['status']) { 'cocok' => 'bg-emerald-100 text-emerald-800', 'perlu_migrasi' => 'bg-blue-100 text-blue-800', 'legacy' => 'bg-amber-100 text-amber-800', default => 'bg-red-100 text-red-800', }; @endphp {{ $compat['label'] }}
Unduh Hapus
{{ $backups->links('vendor.pagination.table-footer') }}
@if ($backupMode !== 'pdo') @endif @if ($hasilTesKonfigurasi) {{ $hasilTesKonfigurasi }} @endif
@foreach ([['1','Validasi backup'],['2','Tinjau dampak'],['3','Verifikasi akses']] as $step)
{{ $step[0] }}{{ $step[1] }}
@endforeach

Tindakan ini akan mengganti seluruh data database saat ini dengan isi backup {{ $pulihkanNama }}.

Aplikasi akan masuk mode maintenance sementara selama proses berlangsung. Sebuah backup pengaman dari kondisi sekarang akan dibuat otomatis sebelum data diganti.

Maintenance

{{ $maintenanceAktif ? 'Aktif — restore diizinkan' : 'Belum aktif — restore diblokir' }}

@if (!$maintenanceAktif)Aktifkan maintenance@endif

2FA Superadmin

{{ $twoFactorAktif ? 'Aktif — verifikasi diwajibkan' : 'Belum aktif — restore diblokir' }}

@if (!$twoFactorAktif)Aktifkan 2FA@endif
@if ($dampakRestore)
!

Simulasi dampak restore

@if ($dampakRestore['diketahui'])

Backup dibuat {{ $dampakRestore['dibuat_at']->translatedFormat('d F Y H:i:s') }}. Ada {{ number_format($dampakRestore['jumlah_perubahan'], 0, ',', '.') }} catatan transaksi/pembayaran setelah waktu tersebut yang berpotensi hilang dari database aktif.

@if ($dampakRestore['rincian'])
    @foreach ($dampakRestore['rincian'] as $item)
  • {{ $item['label'] }}: {{ number_format($item['jumlah'], 0, ',', '.') }}
  • @endforeach
@endif @else

Waktu pembuatan backup lama tidak tersedia. Dampak transaksi setelah backup tidak dapat dihitung; perlakukan sebagai risiko tinggi.

@endif
@endif @if ($pulihkanKompatibilitas)

{{ $pulihkanKompatibilitas['pesan'] }}

@if (($pulihkanKompatibilitas['manifest']['application'] ?? null) !== null)

Versi aplikasi backup: {{ $pulihkanKompatibilitas['manifest']['application']['version'] ?? 'tidak diketahui' }} · Commit: {{ $pulihkanKompatibilitas['manifest']['application']['commit'] ?? 'tidak diketahui' }}

@endif
@endif

Verifikasi restore

Lengkapi ketiga verifikasi berikut menggunakan akun superadmin yang sedang aktif.

1
2
3