0 votos

problema de software: recuperar datos de contactos de Time Machine

Mi Macbook Pro con Sierra está ahora en el taller de reparación. Estoy usando otro MacBook Pro bajo Yosemite mientras mi máquina Sierra está siendo reparada. Sin embargo, me olvidé de exportar los contactos antes de llevar mi máquina Sierra esta mañana y ahora los datos de mis contactos son de hace 3 años, lo que es bastante inútil para mí. No debería ser un problema, porque toda la información necesaria está en mi Time Machine vinculada a Sierra. Sin embargo, las cosas no son tan sencillas (al menos para mí).

¿Cómo puedo ahora obtener la información de mis contactos en la máquina de Yosemite desde la copia de seguridad de Time Machine basada en Sierra? Parece que ninguna de las soluciones publicadas funciona.

0 votos

Por favor, enlace al menos algunas soluciones que no funcionan para evitar respuestas basadas en ellas.

2voto

user91500 Puntos 6355

Actualización: He actualizado el script según los comentarios de @user3439894. El script ahora debería funcionar para la mayoría de los usuarios, sin importar el formato de los datos brutos de su libreta de direcciones.


Tal vez quieras buscar una solución temporal en la línea de comandos. Te da una contact <search_term> que puedes ejecutar en Terminal.app para buscar contactos.

Supongo que tu MBP Yosemite es sólo una solución temporal mientras tu MBP Sierra está en el taller. Aunque el comando Terminal tiene una funcionalidad limitada, podría funcionar lo suficientemente bien como para que te sea útil mientras esperas a que vuelva tu MacBook Pro Sierra.

La configuración del comando temporal no debería requerir más de 10-15 minutos.

La configuración de la contact comando

  1. Abra la copia de seguridad de Time Machine que contiene los datos de su libreta de direcciones (basada en Sierra).

  2. En su copia de seguridad, busque la carpeta "${HOME}/Library/Application Support/AddressBook" que es la carpeta root de todos tus datos de contacto.

  3. Restaurar toda esa AddressBook a una ubicación temporal, por ejemplo: ${HOME}/SierraAddressBook .

  4. Compruebe que todo el ${HOME}/SierraAddressBook tiene los permisos correctos para que puedas leerlo sin una contraseña de administrador.

  5. Por si acaso, haz una copia de seguridad de tu ${HOME}/.bash_profile archivo.

  6. Abrir el archivo ${HOME}/.bash_profile en un editor de texto de su elección.

  7. Añadir temporalmente a .bash_profile las siguientes líneas:

(Tenga en cuenta que para algunas de estas líneas, la sangría es importante; intente no cambiar la sangría en ninguna de esas líneas, aunque parezca un poco fuera de lugar).

contact() {
  # We assume "${HOME}/Library/Application Support/AddressBook"
  # has been restored to this directory from a TM backup.
  local contacts_base_dir="${HOME}/SierraAddressBook"

  local search_term="$1"
  local sql_code="$(cat << EOF
.mode column
      SELECT
        TRIM(       IFNULL(R.ZFIRSTNAME, '')
          || ' ' || IFNULL(R.ZLASTNAME, '')
          || ' ' || IFNULL(R.ZORGANIZATION, '')) NAME,
        'created ' || date('2001-01-01', ZCREATIONDATE
          || ' seconds', 'localtime') CREATED,
        'modified ' || date('2001-01-01', ZMODIFICATIONDATE
          || ' seconds', 'localtime') MODIFIED,
        GROUP_CONCAT(DISTINCT TRIM(IFNULL(E.ZLABEL, ''),
          '! _$<>') || ' ' || IFNULL(E.ZADDRESSNORMALIZED, ''))
          EMAIL,
        GROUP_CONCAT(DISTINCT TRIM(IFNULL(P.ZLABEL, ''),
          '! _$<>') || ' ' || IFNULL(P.ZFULLNUMBER, ''))
          PHONE
      FROM
        ZABCDRECORD R
      LEFT JOIN
        ZABCDEMAILADDRESS E ON E.ZOWNER = R.Z_PK,
        ZABCDPHONENUMBER P ON P.ZOWNER = R.Z_PK
      WHERE
        NAME LIKE '%${search_term}%'
      GROUP BY
        R.Z_PK
      ORDER BY
        NAME;
EOF
    )"

  export sql_code
  find "${contacts_base_dir}" -regex '.*/AddressBook-[^/]*\.abcddb$' \
    -exec bash -c "/usr/bin/sqlite3 '{}' <<< \"\${sql_code}\"" \;
}

export -f contact
  1. Guarde los cambios en .bash_profile .

  2. Abre Terminal.app.

  3. Abra una nueva ventana de terminal.

Uso

Ejecute el comando contact seguido de su término de búsqueda en el Terminal. Por ejemplo:

$ contact "Bella Napoli"

Bella Napoli  created 2013-10-12  modified 2015-05-29              Home +49 931 51706

$ contact IKEA

IKEA Frankfurt  created 2013-10-12  modified 2013-10-12              Work 0180 5 353435

$ contact Neptun

Hotel Neptun  created 2013-10-12  modified 2013-10-12  Work concierge@hotel-neptun.de
Work +49 381 777-0,WorkFAX +49 381 54023

$ contact

<lists all your contacts>

Advertencias

  • El término de búsqueda sólo se aplica al nombre, al apellido y al nombre de la organización.
  • El término de búsqueda distingue entre mayúsculas y minúsculas.
  • El término de búsqueda no puede contener espacios ni ciertos signos de puntuación, a menos que vaya entre las comillas simples o dobles adecuadas.
  • Para buscar por nombre completo, utilice el orden correcto: <first_name> <last_name> <organization_name>
  • Los términos de búsqueda también pueden ser subcadenas de nombres.
  • No avalo ninguna de las empresas y sus productos y servicios que he puesto en el ejemplo. Los he utilizado porque no puedo revelar datos personales por razones obvias. Además, me daba pereza añadir datos falsos a mi propia agenda.
  • He probado el script sólo en El Capitán pero debería funcionar en Yosemite, incluso cuando se combina con datos de la libreta de direcciones basados en Sierra.
  • Si te encuentras con problemas, no dudes en dejar un comentario a continuación.

1 votos

¿Has probado a copiar simplemente el (Sierra) /.../backup.*/.../${HOME}/Library/Application Support/AddressBook a (Yosemite) ${HOME}/Library/Application Support/AddressBook ¿después de cambiar el nombre de la carpeta antigua (Yosemite) de la Libreta de direcciones? Una comprobación rápida utilizando dos sistemas de vida reveló que esto parece funcionar.

1 votos

@klanomath Aunque tu planteamiento es probablemente el más rápido, fácil y pragmático, yo te lo desaconsejaría porque me temo que podría introducir problemas con la sincronización de iCloud, lo que podría volverse en tu contra al cambiar de portátil después de una reparación.

0 votos

@user3439894 El * no puede estar dentro de las comillas. ¿Qué ocurre si se intenta "${CONTACTS_BASE_DIR}"/AddressBook-*.abcddb ¿en su lugar?

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