Debido a que APFS tiene una mente propia y llena el disco duro con instantáneas no deseadas, hice un cron para ejecutar tmutil deletelocalsnapshots xxx
. Más tarde descubrí que ejecutar este comando mientras se realiza una copia de seguridad detendrá la copia de seguridad. ¿Cómo puedo saber si se está realizando una copia de seguridad de Time Machine para evitar ejecutar el comando? La página del manual para tmutil
no muestra ningún comando de estado.
En este momento estoy haciendo lo siguiente en el script, ya que ahora las copias de seguridad se montan en /Volumes/Time Machine Backups/
:
ls -d /Volumes/Time* 2>/dev/null|grep Machin >/dev/null
if [[ $? != 0 ]]; then
# run here tmutil snapshot deletion commands
fi
Sin embargo, esto no parece ser muy preciso. El volumen puede montarse unos minutos más tarde después de que se haya iniciado una copia de seguridad y, además, detener una copia de seguridad deja el volumen montado durante un tiempo. Finalmente, el nombre del volumen montado podría cambiar en el futuro, haciendo inútil la verificación.
La forma canónica de verificar el estado de la máquina del tiempo es usar la utilidad y verificar el estado o, para sistemas operativos más nuevos, verificar solo la fase actual:
tmutil status
tmutil currentphase
Ahora, debe procesar el texto, ya que informa la salida 0 cuando se ejecuta y cuando no se ejecuta desde que se devolvió el estado, no es que haya un estado correcto.
Yo usaría:
tmutil status | grep "Running = 0;"
Eso devuelve 0 si el sistema no se está ejecutando actualmente y 1 si está haciendo una copia de seguridad. Sin embargo, la copia de seguridad en High Sierra implica un evento que no es una instantánea. Las instantáneas son literalmente para unidades externas que, literalmente, no son APFS. Solo el SSD interno recibe tratamiento APFS y las instantáneas locales no son algo que se "ejecuta" sino que "simplemente existen" y la "ejecución" en todo caso es el proceso de adelgazamiento, no el proceso de copia de seguridad.
Las llamadas de proceso de adelgazamiento backupd-helper
que no tienen una herramienta de línea de comando para verificar cuando terminan, pero puede cronometrar la ejecución emitiendo una llamada de bloqueo como:
tmutil thinlocalsnapshots / 1000000000
Arriba tiene suficientes ceros para adelgazar un gigabyte: agregue dos ceros para solicitar 100 GB de vuelta.
Quiero corregir (o al menos desafiar ligeramente) el concepto de demasiadas instantáneas. APFS es una copia en el sistema de archivos de escritura y los únicos ejemplos de que esto es malo parecen configuraciones muy artificiales o no predeterminadas. Los archivos que están alrededor ya están escritos en el disco. El sistema simplemente es "perezoso" para limpiarlos y no gasta tiempo de procesamiento hasta que sabe que a) el sistema está relativamente inactivo b) el almacenamiento está relativamente inactivo y aún no se está quedando sin espacio libre.
Claramente, Apple todavía está cambiando con respecto a cuántas instantáneas mantener montadas, cómo establecer los umbrales de limpieza, cuántos intervalos mantener en situaciones en las que la unidad externa no está conectada y existen instantáneas locales.
Puedes profundizar más con:
tmutil listlocalsnapshots /
tmutil thinlocalsnapshots / 1
tmutil deletelocalsnapshots YYYY-MM-DD-HHMMSS
Una vez más, todavía tengo que ver un lugar donde necesitaba adelgazar o eliminar instantáneas del proceso automático en volúmenes locales. La eliminación puede ser útil cuando desea eliminar una copia de seguridad grande de una unidad externa. La palanca real que solíamos tener era usar las exclusiones de Time Machine para omitir la copia de seguridad de archivos grandes que tenían pequeños cambios. Queda por ver cómo reacciona APFS a estos archivos; supongo que puede colocar ese tipo de archivos en un volumen APFS diferente y adelgazar agresiva y periódicamente o continuar observando las exclusiones de copia de seguridad para ver si eso le ahorra espacio asignado sin ralentizando la copia en rendimiento de escritura y beneficios de almacenamiento.
tmutil currentphase
(que existe al menos desde 10.11) que dará un resumen de una palabra de lo que Time Machine está haciendo actualmente. Muestra 'BackupNotRunning' si Time Machine no está activo. Hay una variedad de otras "palabras" que se usan si se está ejecutando. tmutil currentphase
es básicamente lo mismo que tmutil status | awk -F' ' '/BackupPhase/{print $NF}'
excepto que este último tendrá una ;
al final.tmutil status
a un formato más fácil de analizar, como JSON, puede usar tmutil status | tail -n+2 | plutil -convert json -o - -- -
. Luego puede lanzar esta salida jq
para extraer información.tmutil status
Hay un indocumentado, y por lo tanto sujeto a cambios, tmutil status
. Esta llamada devuelve la respuesta:
Backup session status:
{
ClientID = "com.apple.backupd";
Running = 0;
}
Deberá analizar la parte JSON de la respuesta para saber si Time Machine se está ejecutando.
backupd
En versiones anteriores de macOS, si el backupd
proceso se está ejecutando, Time Machine está realizando una copia de seguridad de forma activa.
Consulte la pregunta de StackOverflow, ¿Comprobar si el programa se está ejecutando con el script bash shell? para métodos robustos de comprobación de un proceso en ejecución.
backupd
ambos backupd-helper -launchd
se muestran en ps
. Así que tmutil status
sigue siendo la mejor manera, a pesar de ser indocumentado.Time Machine tiene una barra de menú que puede usar. Solo necesita habilitar el elemento de la barra de menú.
Dentro del panel de preferencias de Time Machine, hay una casilla de verificación para que aparezca el elemento de la barra de menú. La barra de menú le permite hacer una copia de seguridad manualmente, si está haciendo una copia de seguridad y qué tan avanzada está.
EDITAR: Sin embargo, esto no le permitirá configurar un cron para saber cuándo se está tomando una instantánea local, tendría que hacerlo manualmente.
Edición 2: votado negativamente o no, aquellos que busquen la pregunta titulada encontrarán que mi respuesta es útil. No lo borraré.
bmike
Grzegorz Adam Hankiewicz
bmike
tmutil thinlocalsnapshots \ 100...
con suficientes ceros para llegar a 120 GB. Si ha pagado soporte, abriría un caso con Apple en ese caso de uso. Parece unotmdiagnose
y los ingenieros podrían asegurarse de que su configuración funcione para su caso de uso. Editaré mi publicación para obtener una purga de 1 GB. Gran pregunta +2 si pudiera votar dos veces.Grzegorz Adam Hankiewicz
bmike
thinlocalsnapshots
másdeletelocalsnapshots
cuando necesito liberar espacio con urgencia. (por ejemplo, cuando prepara previamente una instalación de Adobe de 50 GB durante un período de una o dos semanas para que podamos instalarlos todos desde la imagen local en lugar de a través de la red)Thorbjorn Ravn Andersen