8 votos

Cómo restaurar un archivo individual de Time Machine usando CLI (MacOS)

¿Cómo puedo restaurar un solo archivo de una copia de seguridad antigua de Time Machine usando solo la Interfaz de Línea de Comandos?

Hice una instantánea de mi sistema MacOS utilizando Time Machine hace algún tiempo y me gustaría restaurar solo un archivo de ella.

Además, no tengo acceso GUI a esta máquina; solo ssh (con privilegios de root).

¿Es posible restaurar solo un archivo de una copia de seguridad de Time Machine utilizando la CLI a través de SSH? Si es así, ¿cómo?

8voto

Michael Altfield Puntos 143

Puedes navegar hasta los archivos directamente y restaurarlos con el comando rsync.

Determina la ruta de las copias de seguridad

Primero, lista todas tus copias de seguridad existentes usando tmutil listbackups

user@host ~ % tmutil listbackups
/Volumes/externalBackups/Backups.backupdb/host/2020-06-17-095312
/Volumes/externalBackups/Backups.backupdb/host/2020-06-18-222034
/Volumes/externalBackups/Backups.backupdb/host/2020-06-21-110109
user@host ~ %

Ingresa al directorio de la copia de seguridad

Luego, haz cd a uno de los directorios anteriores (el que deseas restaurar)

user@host ~ % cd /Volumes/externalBackups/Backups.backupdb/host/2020-06-21-110109
user@host 2020-06-21-110109 % 

Ingresa al directorio de datos de la copia de seguridad

Debería haber un directorio - Data con los datos de esta copia de seguridad en particular de Time Machine. En este caso, nuestras copias de seguridad fueron creadas con tmutil startbackup, por lo que el directorio de Datos es Untitled - Data

user@host 2020-06-21-110109 % ls | grep -i Data
Untitled - Data
user@host 2020-06-21-110109 % 

user@host 2020-06-21-110109 % cd "Untitled - Data"
user@host Untitled - Data % 

Restaurar con rsync

Puedes restaurar un archivo específico con rsync. Por ejemplo, para restaurar el archivo /private/etc/resolv.conf en tu sistema, puedes ejecutar lo siguiente

user@host Untitled - Data % sudo rsync -av --progress private/etc/resolv.conf /private/etc/resolv.conf
...
user@host Untitled - Data %

3 votos

Personalmente prefiero usar rsync en lugar de cp. Sin embargo, dado que la intención es utilizar el comando cp para restaurar un archivo de una "copia de seguridad", recomendaría usar cp -p. De esta manera, el archivo restaurado conservará los siguientes atributos de cada archivo fuente en la copia: hora de modificación, hora de acceso, banderas de archivo, modo de archivo, ID de usuario e ID de grupo, según lo permitan los permisos.

1 votos

Sí a lo anterior, e idealmente rsync -a por la misma razón que mencionó @wch1zpink.

0 votos

Cambiado a rsync. También lo prefiero, pero no estaba seguro si estaba instalado por defecto en MacOS.

4voto

Louis Langholtz Puntos 103

Usar tmutil restore

Como fanático de Unix desde hace mucho tiempo, me encanta rsync. Sin embargo, el uso del nativo rsync para este propósito, incluso en macOS Ventura 13.2, tiene algunas desventajas:

  1. Como se sugiere en un comentario de huyz, rsync no es consciente de macOS. He descubierto que no copiará ninguno de los atributos extendidos de los archivos que use para restaurar.
  2. rsync no es un programa de utilidad de Time Machine que esté diseñado para Time Machine y parece improbable que reciba soporte específico de Apple para el propósito de restaurar archivos de Time Machine.

Alternativamente, usa tmutil.

tmutil es la utilidad de línea de comandos de Time Machine provista por Apple que admite la acción de restore (desde al menos macOS 10.15):

tmutil restore src ... dst

La página manual de tmutil para la acción de restauración dice lo siguiente:

restore [-v] src ... dst

Restaura el ítem src, que está dentro de una copia de seguridad, en la ubicación dst. El argumento dst imita la semántica de la ruta de destino de la herramienta cp. Puedes proporcionar múltiples rutas de origen para restaurar. La última ruta debe ser un destino.

Cuando se utiliza el verbo restore, tmutil se comporta en gran medida como Finder. Los metadatos personalizados de Time Machine (seguridad extendida y otros) se eliminarán de los datos restaurados, y otros metadatos se conservarán.

Puede ser necesario tener privilegios de acceso de root y acceso completo al disco para realizar restauraciones. Al restaurar con tmutil como usuario root, la propiedad de los elementos restaurados coincidirá con el estado de los elementos en la copia de seguridad.

Este es un ejemplo de cómo se ve esto. Esto es para restaurar el contenido de la carpeta Downloads de mi otro Mac (Otro Sistema). Y mi consola está en la carpeta de esa copia de seguridad de la cual quería restaurar:

Downloads $ tmutil restore * ~/Downloads 
Total copiado: 2273.96 MB (2384424593 bytes)
Elementos copiados: 76143
Downloads $ pwd
/Volumes/My Disk 1/Backups.backupdb/Other System/Latest/Macintosh HD - Data/Users/louis/Downloads
Downloads $ ls -l@ manual.docx            
-rw-r--r--@ 99 louis  staff  381577 Dec  5  2015 manual.docx
    com.apple.finder.copy.source.checksum#N      4 
    com.apple.metadata:_kTimeMachineNewestSnapshot      50 
    com.apple.metadata:_kTimeMachineOldestSnapshot      50 
    com.apple.metadata:kMDItemDownloadedDate        53 
    com.apple.metadata:kMDItemWhereFroms       218 
    com.apple.quarantine        57 
Downloads $ ls -l@ ~/Downloads/manual.docx            
-rw-r--r--@ 1 louis  staff  381577 Dec  5  2015 /Users/louis/Downloads/manual.docx
    com.apple.metadata:kMDItemDownloadedDate        53 
    com.apple.metadata:kMDItemWhereFroms       218 
    com.apple.quarantine        57 
Downloads $ tmutil compare manual.docx ~/Downloads/manual.docx 

-------------------------------------
Añadido:         0B
Eliminado:       0B
Modificado:       0B
Downloads $

Los argumentos de la línea de comandos src ... y dst en este sentido son como los que usaría para rsync o cp. La diferencia radica en que al usar tmutil restore, todos los metadatos de los archivos parecen conservarse con la excepción de los "metadatos de Time Machine", que supongo que son metadatos asociados con los archivos de la carpeta de copia de seguridad pero no con los archivos originales ni restaurados. Por lo tanto, los archivos restaurados y sus metadatos parecen ser exactamente lo que eran en la computadora original desde la que se respaldaron.

-1voto

Maxim Puntos 428

Si encuentras que una interfaz gráfica de usuario es más fácil de navegar, deberías poder utilizar un cliente FTP (Transmit, Filezilla, Cyberduck, etc.) y conectarte a tu copia de seguridad de Time Machine a través de sftp.

0 votos

¿Por qué se publicó esto como una respuesta? ¡Las soluciones presentadas no son las mismas que usar el Finder o escoger un archivo de una copia de seguridad para la recuperación?

0 votos

Porque el autor original afirmó que no tenía acceso a la GUI pero sí tenía SSH, lo que significa que un cliente SFTP proporcionaría acceso a la GUI. No necesariamente será obvio para todos los usuarios que esta es una opción. He usado el mismo enfoque con mi propia copia de seguridad de TimeMachine, para acceder a archivos específicos de forma remota desde mi servidor doméstico a través de SFTP. El autor preguntó cómo transferir un archivo a través de SSH. Esta es una opción viable.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X