1 votos

Cómo hacer Rsync copiar archivos de alias?

Especificaciones del sistema: 2011 iMac, mac OS X Mountain Lion 10.8.4

He llegado a comprender que Rsync no manejar Mac Alises correctamente, y ahora han descubierto que cientos de alias he copiado previamente en mi disco duro portátil, son muertos e inútiles a causa de esto.

Es allí una manera de forzar a Rsync para manejar alias? Si la respuesta es un definitivo "no", entonces ¿cómo puedo recursivamente convertir por lotes todos los alias en un directorio de enlaces simbólicos para que puedan ser manejados por Rsync? He encontrado referencias a un Applescript que aparentemente hacer esto, pero el sitio de alojamiento de la secuencia de comandos es mucho tiempo muerto y desaparecido.

Como último recurso, ¿alguien sabe de algo distinto a Rsync que permitiría a las copias de seguridad incrementales y también se encargan de Alias?

0voto

Rsync no puede mirar en el contenido de los archivos de Alias que sería necesario para convertirlos. Así que si usted desea tener una copia de seguridad de ser utilizable como es (sin restaurar a la orignal de la unidad) se tendrá que reemplazar el Alias con enlaces simbólicos.

Hay una solución para esto en MacOSXHints.com. Se debe ejecutarse en su disco original (no en la copia de seguridad), también recomendaría probarlo en algunos ejemplos de directorios.

#!/bin/sh
if [ $# -eq 0 ]; then
    echo "Usage: alias2ln alias1 alias2 alias3..."
    echo "  where alias1, alias2, etc are alias files."
    echo "  Each alias file will be converted into a symlink."
fi

while [ $# -gt 0 ]; do
    if [ -f "$1" -a ! -L "$1" ]; then
        item_name=`basename "$1"`
        item_parent=`dirname "$1"`
        item_parent="`cd \"${item_parent}\" 2>/dev/null && pwd || echo \"${item_parent}\"`"
        item_path="${item_parent}/${item_name}"

        linksource=`osascript<<EOS
tell app "Finder"
set theItem to (POSIX file "${item_path}") as alias
if the kind of theItem is "alias" then
get the posix path of (original item of theItem as text)
end if
end tell
EOS`

        if [ $? -eq 0 ]; then
            if [ ! -z "$linksource" ]; then
                rm "$item_path"
                ln -s "${linksource}" "${item_path}"
                echo "\"${1}\" -> \"${linksource}\""
            fi
        fi
    fi
    shift
done

Para ejecutar

  • guardar el código anterior en un archivo de texto (por ejemplo, alias2symlink)
  • ejecutar chmod 755 alias2symlink
  • cambie a la carpeta donde desea convertir el alias en
  • ejecutar /path/to/alias2symlink alias1 alias2 ...

-1voto

Jonathan van Clute Puntos 685

Para referencia en el futuro me encontré con un simple Mac servicio que convierte los alias a los enlaces simbólicos a la perfección!

La solución en realidad envuelve la secuencia de comandos mencionados en la otra respuesta como una acción de automator para facilitar el uso por quienes no están familiarizados con el Terminal.

Para volver a crear el servicio, el uso de Automator para crear un servicio que recibe los archivos y carpetas seleccionados, seleccione el Ejecutar el shell script de acción, y pegar pastix de la secuencia de comandos en el área del script.

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