Respuesta corta: mira la fecha del archivo más reciente de la copia, no la fecha de la carpeta. La marca de tiempo de una carpeta cambia por motivos que no tienen nada que ver con que termine una copia.
Si el archivo más reciente de dentro es anterior a ayer, la copia no se ha estado ejecutando, diga lo que diga la herramienta.
La mayoría de consejos sobre copias de seguridad tratan del desastre equivocado. Imaginan uno dramático: un disco muere, roban un portátil, una inundación. Son raros y todo el mundo los entiende.
El caso común es aburrido. El disco se desconectó para hacer sitio a otra cosa y nunca se volvió a conectar. El NAS se reinició tras un corte de luz y el recurso no se volvió a montar. El portátil estaba cerrado en el momento en que tocaba la tarea, cada noche, durante un mes. Un script terminó con un error que nadie leyó porque nadie lee un registro que lleva un año yendo bien.
En todos esos casos, nada está roto. No aparece ningún error donde alguien mire. La carpeta de la copia sigue ahí, sigue llena de archivos, sigue teniendo el tamaño correcto. Lo único que ha cambiado es que dejó de actualizarse, y nada en el sistema considera que merezca la pena mencionarlo.
Apúntalo a tu destino de copia. Busca el archivo modificado más recientemente en cualquier parte dentro y muestra su fecha:
find /Volumes/Backup -type f -print0 | xargs -0 stat -f '%m %N' | sort -rn | head -5
La primera columna es una marca de tiempo Unix. Para leerla directamente:
find /Volumes/Backup -type f -newermt '-2 days' | head
Si no muestra nada, no se ha escrito nada en dos días. Esa es la respuesta, y es más fiable que cualquier pantalla de estado, porque es una propiedad de los propios archivos.
Para Time Machine en concreto:
tmutil latestbackup
que muestra la ruta de la instantánea más reciente, con su fecha en el nombre, o un error si no hay ninguna.
El instinto es mirar la carpeta de la copia en el Finder y leer la columna Fecha de modificación. Ese número no es lo que crees.
La fecha de modificación de una carpeta cambia cuando se le añade o se le quita algo, no cuando cambia el contenido de un archivo de dentro. La indexación de Spotlight, un .DS_Store que se reescribe, un antivirus, un cliente en la nube tocando sus propios metadatos: cualquiera de estos puede hacer que una carpeta de copia obsoleta parezca escrita esta mañana.
Los archivos de dentro son el registro. La carpeta no.
launchd con StartCalendarInterval no se ejecuta mientras el Mac está en reposo, y no se pone al día después salvo que se lo pidas. Un portátil cerrado a medianoche tiene una copia de medianoche que no se ha hecho ni una sola vez.launchd escribe su queja en un archivo, y ese archivo es lo único que lo sabe.Si lo haces tú, la solución es un interruptor de hombre muerto: algo que se queje cuando una copia no se ha hecho. Es un evento distinto de que una falle, y solo el primero cubre los casos de arriba.
La versión más sencilla es una tarea que comprueba la antigüedad del archivo más reciente y avisa si es demasiado antiguo:
if [ -z "$(find /Volumes/Backup -type f -newermt '-2 days' 2>/dev/null | head -1)" ]; then
osascript -e 'display notification "No backup in two days" with title "Backup"'
fi
Ejecútalo con su propia programación, separada de la copia, para que una programación de copias rota no rompa también lo que la vigila. Ese último punto es el que la gente hace mal: una comprobación que se ejecuta dentro de la tarea de copia no puede informar de que la tarea no se ejecutó.
Lo que quieres de verdad es que la ausencia sea la alarma, y que la herramienta nombre lo que falta.
Copy Shelter se basa en eso. Registra cuándo se escribió y se comprobó por última vez cada destino, y avisa tras siete días sin una copia que haya funcionado. Nombra la ubicación, así que recibes "el disco del cajón no se ve desde el 14 de agosto". Y como vuelve a leer la copia y comprueba cada pieza contra el hash con el que se guardó, también detecta una copia que se ejecuta pero produce algo ilegible, que es el fallo un paso más allá de esta página.
La puntuación que muestra solo cuenta lo que se ha verificado recientemente. Una copia que no se ha ejecutado no es una copia que tengas, y el número lo dice.
No deberías tener que hacerlo. Esa es la idea de la página: una comprobación que haces a mano es una comprobación que dejarás de hacer, normalmente unas tres semanas después de configurarla. Automatiza la alarma de ausencia, y deja la comprobación a mano para cuando te lo pida.
Ayuda, y tiene límites. Time Machine avisa cuando lleva diez días sin completar una copia, y el aviso es fácil de descartar y fácil de dejar de ver. Tampoco puede decirte que la copia que sí completó es ilegible, porque en un disco local no la comprueba.
Ese es el caso de los permisos, y es más traicionero porque todos los indicadores de estado dicen que todo ha ido bien. Compara el número de archivos en el destino con el del origen. Si una copia que debería tener decenas de miles de archivos tiene cuarenta, macOS está denegando el acceso a las carpetas y no se lo dice a la tarea.
De otra forma, y sí. Los clientes de sincronización cierran sesión, llegan a la cuota y se pausan solos, y la insignia que te lo diría es un iconito en una barra de menús que no estás mirando. Además los archivos siguen exactamente donde estaban, así que nada parece ir mal.
En gran parte, sí. Dos destinos que fallan por motivos distintos, comprobados por separado, valen más que cualquier cantidad de vigilancia sobre uno. La vigilancia te dice que la copia ha desaparecido; la segunda copia hace que no importe. Consulta la regla 3-2-1.
Relacionado: comprobar que una copia se puede leer de verdad y la regla 3-2-1.