¿Cómo soluciono los alias fallidos?

7

Tenía dos discos duros externos: externo y de respaldo. Externo tenía muchos alias que apuntaban a otros archivos en el mismo disco. La copia de seguridad se utilizó para hacer una copia de seguridad externa.

Fallo externo, y ahora uso Copia de seguridad, que desde entonces he cambiado de nombre a Externo. Desafortunadamente, todos esos alias ahora apuntan a /Volumes/Backup/… y por lo tanto ya no funcionan.

No quiero tener que corregirlos o recrearlos uno por uno.

¿Hay alguna forma de corregir todos los alias para que apunten a /Volumes/External/… en lugar de /Volumes/Backup/… ?

    
pregunta mouviciel 27.09.2010 - 20:59

4 respuestas

3

Aquí está mi esfuerzo por resolver este problema con Applescript. El siguiente applecript tomará los alias seleccionados en el Finder e intentará volver a vincularlos a la nueva ruta, reemplazando Backup con External en la ruta POSIX.

Esperemos que sea sencillo. Probablemente podría hacer que sea recursivo buscar alias en las carpetas seleccionadas, pero eso es más trabajo del que me importa hacer, y luego está el problema de tratar con los alias en las carpetas. Las cosas podrían ensuciarse. ;-)

Espero que ayude.

tell application "Finder"
    set these_items to the selection
end tell

repeat with i from 1 to the count of these_items
    set this_item to (item i of these_items) as alias
    set this_info to info for this_item

    if class of this_item is alias then
        tell application "Finder"
            set original_file to original item of this_item
            set this_alias_file_name to displayed name of this_item
            set container_folder to container of this_item

            set the_path to the POSIX path of (original_file as alias)
            set new_path to my replaceText("/Backup/", "/External/", the_path)

            move this_item to trash
            try
                make new alias file at container_folder to (POSIX file new_path) with properties {name:this_alias_file_name}
            on error errMsg number errorNumber
                if errorNumber is -10000 then -- new original file not found, try relinking to old
                    try
                        make new alias file at container_folder to (POSIX file the_path) with properties {name:this_alias_file_name}
                    on error errMsg number errorNumber
                        if errorNumber is -10000 then -- old original not found. link's dead Jim
                            display dialog "The original file for alias " & this_alias_file_name & " was not found."
                        else
                            display dialog "An unknown error occurred:  " & errorNumber as text
                        end if
                    end try
                else
                    display dialog "An unknown error occurred:  " & errorNumber as text
                end if
            end try
        end tell
    end if
end repeat

on replaceText(find, replace, subject)
    set prevTIDs to text item delimiters of AppleScript
    set text item delimiters of AppleScript to find
    set subject to text items of subject

    set text item delimiters of AppleScript to replace
    set subject to "" & subject
    set text item delimiters of AppleScript to prevTIDs

    return subject
end replaceText
    
respondido por el ghoppe 30.09.2010 - 19:41
2

¿Nombrar el disco a Copia de seguridad? En serio, creo que esa sería la forma más rápida de resolver el problema. O puede escribir un script de shell que recursivamente encuentre que todos los aliase apuntan al volumen de "Copia de seguridad" y los vuelva a crear para que apunten al nuevo nombre ...

edit

Echa un vistazo a enlace , en particular a mkalias.

    
respondido por el Robert S Ciaccio 28.09.2010 - 02:25
1

Hace poco tuve que resolver el mismo problema y escribí este código ruby para corregir todos los alias de forma recursiva .

Lo pegaré aquí:

#!/usr/bin/ruby

# these are the folders containing all your images
if ARGV.size == 2
  dir_base     = ARGV[0]
  alias_folder = ARGV[1]
else
  puts "usage $0 dir_with_all_files sub_dir_containing_broken_aliases"
  puts "  or pass -d to use defaults:  ~/img  background"
  if ARGV[0] && ARGV[0] == '-d'
    dir_base     = File.expand_path '~/img'
    alias_folder = 'background'
  end
end

# list of all alias file paths, dirs excluded
alist = Dir.glob("#{dir_base}/#{alias_folder}/**/*").
            select{|w| w.scan('.').any? }

# a list of all file paths, alias fodler contents excluded
flist = Dir.glob("#{dir_base}/**/*").
            reject{|w| w.scan("#{dir_base}/#{alias_folder}").any? }

# forcably create new aliases by overwriting old files
alist.each do |f| 
  flist.each do |w| 
    'ln -fs #{w.gsub(' ','\ ')} #{f.gsub(' ','\ ')}' if w.split('/').last == f.split('/').last
    puts "linked #{w.gsub(' ','\ ')}  to  #{f.gsub(' ','\ ')}"
  end
end
    
respondido por el New Alexandria 24.03.2013 - 09:44
0

Su problema no es con el nombre "Copia de seguridad". Lo mismo me ocurre con el menú contextual "Comparar archivos" (creo que ese es el problema) y, ciertamente, con los archivos abiertos desde DreamWeaver. Ha habido algunos cambios / correcciones en el sistema operativo Apple porque DW intenta abrir el mismo archivo en Chrome sin "Volumen" antes del nombre de la partición, y el mismo archivo abierto en Chrome revela "Volumen" que funciona.

Entonces, Adobe o Apple hicieron un cambio o corrigieron la forma en que apuntan / llaman a una partición que no sea el disco de inicio en esa misma unidad.

Entonces, en el caso de OP, el nombre de la unidad es copia de seguridad. El problema es que los alias tienen "Volumen" agregado. Creo que en algún momento el disco de inicio no debía incluir "Volúmenes" y luego lo arreglaron para el Finder y otros lugares obvios, pero aún no llegaron a los alias.

    
respondido por el Sergio 01.02.2012 - 12:54

Lea otras preguntas en las etiquetas