¿Cómo hacer que Rsync copie archivos de alias?

2

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

Comprendí que Rsync no maneja correctamente Mac Alises y ahora he descubierto que cientos de alias que he copiado anteriormente en mi disco portátil están muertos e inútiles debido a esto.

¿Hay alguna forma de forzar a Rsync para que maneje los alias? Si la respuesta es un "no" definitivo, ¿cómo puedo convertir por lotes de forma recursiva todos los alias en un directorio a enlaces simbólicos para que Rsync los maneje? He encontrado referencias a un Applescript que aparentemente haría esto, pero el sitio que aloja el script está muerto hace mucho tiempo & ido.

Como último recurso, ¿alguien sabe algo que no sea Rsync que permita realizar copias de seguridad incrementales y también maneje Alias?

    
pregunta Jonathan van Clute 02.09.2013 - 04:50

2 respuestas

-1

Para futuras referencias, encontré un servicio Mac simple que convierte los alias en enlaces simbólicos perfectamente!

Esa solución realmente envuelve el script mencionado en la otra respuesta como una acción de automatización para facilitar su uso por aquellos que no están familiarizados con Terminal.

Para volver a crear el servicio, use Automator para crear un servicio que reciba los archivos y carpetas seleccionados, seleccione la acción Ejecutar script de shell y pegue el script de pastix en el área de script.

    
respondido por el Jonathan van Clute 09.09.2015 - 17:49
0

Rsync no puede ver el contenido de los archivos de Alias que se necesitarían para convertirlos. Por lo tanto, si desea que su copia de seguridad se pueda utilizar tal como está (sin restaurarla en la unidad original), deberá reemplazar los Alias por enlaces simbólicos.

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

#!/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

  • guarda el código anterior en un archivo de texto (por ejemplo, alias2symlink )
  • ejecuta chmod 755 alias2symlink
  • cambie a la carpeta donde desea convertir los alias en
  • ejecuta /path/to/alias2symlink alias1 alias2 ...
respondido por el nohillside 02.09.2013 - 07:53

Lea otras preguntas en las etiquetas