@if ($recovered) Database backups on {{ $host }} are healthy again. {{ $reason }} @else The database backup on {{ $host }} did not produce a usable dump. {{ $reason }} Until this is fixed there is no fresh restore point. The offsite copy is an rsync mirror with --delete, so it does not compensate — it reflects whatever is on this server, including the absence of a new dump. @endif @if ($context !== []) Detail: @foreach ($context as $label => $value) - {{ str_pad($label, 14) }} {{ $value }} @endforeach @endif Where to look: - storage/logs/db-backup.log output of both scheduled backup commands - php artisan backup:database run it by hand; it prints the reason - df -h /var/www a full disk truncates dumps mid-write - sudo crontab -u www-data -l no schedule:run entry means nothing runs at all. Reinstall it from the ansible-thinkpi repo: ansible-playbook \n playbooks/setup-kulibri-backup.yml \n --ask-vault-pass -e target_group=prod Retention is {{ config('backup.retention_days') }} days, so a gap longer than that leaves no dump from before it. Copy anything you still need out of {{ config('backup.path') }} before restarting the scheduler: backup:cleanup deletes on age, not on count. -- See Hosting.md for the full backup setup.