Cómo eliminar todas las instantáneas locales de TimeMachine

Tengo habilitada la copia de seguridad automática y las instantáneas locales de TimeMachine ocupan una gran cantidad de espacio en disco. Este espacio aparece como purgable en la información del disco, pero no se puede usar hasta que el sistema decida liberarlo. ¿Cómo puedo obligar a TimeMachine a eliminar esas instantáneas?

Bienvenido a AskDifferent. Si bien está perfectamente bien publicar tanto la pregunta como la respuesta, asegúrese de que la pregunta realmente se lea como una pregunta, por ejemplo, comienza con el problema a resolver, en realidad contiene una pregunta, explica por qué no es lo que está buscando, tmutil thinlocalsnapshotsetc.
El comando delgado está abordando esta necesidad de manera tan directa que vincularé esa pregunta en una respuesta específica a la pregunta de liberar espacio "ocupado" por estos. Tenga en cuenta que el sistema los purga automáticamente, por lo que no es necesario liberar este espacio.
@bmike en mi caso, necesitaba liberar el espacio por adelantado, porque un instalador de software no me permitía ejecutar una instalación a menos que hubiera 50 GB de espacio libre en el disco. Supongo que thinlocalsnapshotsfuncionaría igual de bien.
+1 por esa razón. No esperaría que muchos instaladores verifiquen el espacio purgable y confíen en que una vez que comience, se liberará más rápido de lo que escribió. Me alegro de que tengas un par de opciones.

Respuestas (5)

En Terminal, ejecuta este pequeño script:

for d in $(tmutil listlocalsnapshotdates | grep "-"); do sudo tmutil deletelocalsnapshots $d; done

El script enumera todos los hosts instantáneos y los elimina todos en un bucle.

Esto acaba de liberar 190GB en mi máquina...
¿Hay alguna forma de verificar cuál es el tamaño de estas copias de seguridad antes de eliminarlas?

Si no se está quedando sin espacio en disco (5 GB libres), simplemente deje que se asigne este espacio, ya que no hay inconveniente en esperar para purgar los archivos hasta que necesite espacio.

Dicho esto, si decide eliminar las copias de seguridad de forma preventiva, prefiero decirle al sistema que libere espacio. Si sabe que tiene una cantidad de 50 GB para liberar, cambie los 5 a continuación a 50 y luego el sistema iterará en todas las instantáneas locales y las eliminará en el orden definido por el sistema.

tmutil thinlocalsnapshots / $(echo "5 * 1000000000" | bc) 2

La única iteración que haría es ver cuántos volúmenes APFS tiene y luego quizás reducir cualquiera que esté montado.

Aquí hay un buen hilo que explica la urgencia: 2 funciona bien para mis necesidades, pero la página del manual explica que hay 4 niveles de urgencia, por lo que si tiene necesidades específicas, observe el IO y el rendimiento durante la reducción y experimente con instantáneas más pequeñas para reducir.

¿Sobre qué base son 5 GB gratis el umbral? Soy un fotógrafo que usa, por ejemplo, tarjetas flash de 128 GB. Si lleno la tarjeta con una sesión de fotos y la importo a Lightroom. Necesitaré 128 GB más lo que Lightroom use para sus vistas previas. Si OSX purga automáticamente esas instantáneas si no puedo acomodar mi importación de otra manera, entonces está bien. Pero si no, prefiero que no estén las instantáneas. ¿Hay alguna manera de decirle a Time Machine cuánto espacio dejar?
@VictorEngel Es casi suficiente para instalar la mayoría de las principales actualizaciones del sistema operativo, así que empiezo por ahí. Tampoco es tan grande, es masivo y tan pequeño que es insignificante. Este es un almacenamiento purgable, casi nunca tiene que pedir que se libere en mi experiencia. Tal vez sería útil una pregunta sobre su situación general. A menos que tenga una unidad enorme, podría tener sentido para usted no poner 128 GB en el volumen de arranque en primer lugar...
128 GB en estos días no es una cantidad enorme. Tenga en cuenta que mi cámara es una Canon 5DS, que tiene archivos sin formato que con frecuencia superan los 80 MB cada uno. Si voy a tomar fotos en un evento, ciertamente quiero procesarlas en un SSD local. Esto es normal, no es un caso extremo. Después de procesar un conjunto de imágenes, las muevo a un HD externo (actualmente una unidad de 5 TB que está llena al 80 %). Mencioné los medios extraíbles de 128 GB para indicar que este es un tamaño normal para una unidad de datos activa. Estas tarjetas vienen en capacidades más grandes, pero 128 GB son suficientes para mí. Y luego está el video... PD: mi volumen de arranque es SSD de 1 TB

Descubrí por accidente que al abrir las ventanas de "Administración de almacenamiento" (Cmd-U) en "Información del sistema" se liberaban las instantáneas de la máquina de la hora local, lo que hacía que el espacio estuviera disponible.

No sé si esta es una forma oficialmente compatible.

Creo que esto funcionó para mí. La instantánea todavía está allí cuando tmutil listlocalsnapshots / pero el espacio se ha liberado...
Esto también funcionó para mí. He eliminado varios archivos grandes usando grandperspective, pero todavía hay mucho espacio de almacenamiento consumido por archivos varios. Abrir la ventana "administrar" de alguna manera obliga al sistema a indexar archivos y reflejar el espacio libre "correcto".
Esto también funcionó para mí. Había simplificado manualmente algunas instantáneas siguiendo los consejos anteriores, pero esto es lo que hizo que mi sistema reconociera instantáneamente la cantidad de espacio libre. ¡Gracias!

Paso 1:

En Terminal, ingrese el siguiente comando para enumerar todas las instantáneas de respaldo:

tmutil listlocalsnapshots /

Obtendrá una lista de todas las instantáneas en el directorio raíz ( /).

Paso 2:

Elimine cada instantánea ingresando el siguiente comando + fecha de la instantánea correspondiente:

sudo tmutil deletelocalsnapshots <snapshot_date>

Ejemplo:

sudo tmutil deletelocalsnapshots 2020-09-26-143409

Consejo extra:

Recuerde que siempre puede obtener ayuda con un comando en la terminal ingresando el comando raíz -ho -help.

Ingrese tmutil -helppara ver todos los comandos de la utilidad Time Machine y las instrucciones de uso.

La forma aún más elegante de eliminar todas las instantáneas:

for x in $(tmutil listlocalsnapshots /);do
sudo tmutil deletelocalsnapshots $(cut -d '.' -f 4 <<<"$x")
done
¿En qué se diferencia esto de apple.stackexchange.com/a/340906/9058 ?
Solo por sintaxis.
No exactamente. deletelocalsnapshots hace otra cosa cuando no recibe ningún argumento.