Come fare a Rsync per copiare i file alias?

2

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

Sono giunto alla conclusione che Rsync non gestisce correttamente Mac Alises e ora ho scoperto che centinaia di alias che ho precedentemente copiato sulla mia unità portatile sono morti e inutili a causa di ciò.

C'è un modo per forzare Rsync a gestire gli alias? Se la risposta è un "no" definitivo, come posso convertire in modo ricorsivo tutti gli alias in una directory in symlink in modo che vengano gestiti da Rsync? Ho trovato riferimenti ad un file Applescript che apparentemente farebbe questo, ma il sito che ospita lo script è morto da tempo e amp; andata.

Come ultima risorsa, qualcuno sa qualcosa di diverso da Rsync che consentirebbe backup incrementali e gestirà anche gli alias?

    
posta Jonathan van Clute 02.09.2013 - 04:50
fonte

2 risposte

-1

Per riferimento futuro ho trovato un semplice servizio Mac che converte alias in modo simbolico perfettamente!

Questa soluzione avvolge in realtà lo script menzionato nell'altra risposta come azione automatica per renderlo più facile da usare da parte di chi non ha familiarità con Terminal.

Per ricreare il servizio, utilizzare Automator per creare un servizio che riceve file e cartelle selezionati, selezionare l'azione Esegui script shell e incollare lo script di pastix nell'area di script.

    
risposta data 09.09.2015 - 17:49
fonte
0

Rsync non può esaminare il contenuto dei file Alias che sarebbero necessari per convertirli. Quindi, se si desidera che il backup sia utilizzabile così com'è (senza ripristinarlo nell'unità originale), sarà necessario sostituire gli alias con collegamenti simbolici.

C'è una soluzione per questo su MacOSXHints.com. Deve essere eseguito sul disco originale (non sul backup), vorrei anche raccomandarlo per testarlo prima su alcune directory di esempio.

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

Per eseguire

  • salva il codice sopra in un file di testo (ad esempio alias2symlink )
  • Esegui chmod 755 alias2symlink
  • passare alla cartella in cui si desidera convertire gli alias in
  • Esegui /path/to/alias2symlink alias1 alias2 ...
risposta data 02.09.2013 - 07:53
fonte

Leggi altre domande sui tag