Cambiar número de inodo

-1

Tengo mi biblioteca de música en un .dmg para fines de portabilidad. Hace un tiempo, algo le sucedió al sistema de archivos en este disco, pero la Utilidad de Disco logró rescatar todo. Sin embargo, hay un problema: todos los números de inodo se desordenaron e iTunes parece priorizar el número de inodo a la ruta de acceso suave a los archivos. Ahora tengo un par de cientos de archivos en mi biblioteca de música que apuntan hacia directorios en lugar de archivos. Tengo que, en iTunes, cambiar manualmente estos punteros. Estos son los pasos que debo seguir para lograrlo:

  1. Duplica el directorio.
  2. Eliminar (rm -rf, ponerlos en la Papelera no es suficiente) el directorio original.
  3. Cmd-I en el archivo en iTunes, quien luego se queja de que no se puede encontrar el archivo.
  4. Localiza el archivo correcto en el diálogo de fila de iTunes
  5. Cambie el nombre del directorio duplicado al nombre original (iTunes retrocede en las rutas si el número de inodo ha cambiado).

Esto es un poco de PITA. ¿Hay alguna forma de hacer algo como "touch --sign-new-random-inode [nombre del directorio]" por lo que no necesito duplicar y eliminar muchos directorios (es fácil cometer un error manual aquí)?

    
pregunta d-b 24.12.2016 - 12:56

2 respuestas

-2

Resolví esto creando un servicio de Automator. Funciona así:

  1. Obtener artista, álbum y número de pista. Mostrar el archivo erróneo en el Finder.
  2. Almacena los valores anteriores.
  3. Encuentre el padre del archivo en (1).
  4. chmod -x en el padre (4)
  5. Haz "información" en la pista en iTunes. Dado que el archivo es inaccesible debido a (4) iTunes me pide que lo busque.
  6. chmod + x en el padre (4)
  7. Ya que mi música está ordenada / Artista / Álbum / Utilizo los valores almacenados arriba para hacer una conjetura ingenua donde podría ahorrarme trabajo manual para buscar la carpeta correcta
  8. Verifique manualmente que se haya seleccionado el archivo correcto. Hecho.

No creo que pueda adjuntar un flujo de trabajo a esta pregunta, de lo contrario, me encantaría compartirlo.

    
respondido por el d-b 06.02.2017 - 16:28
1

No hay syscall para cambiar los números de inodo directamente. Entonces, lo que haría para lograr lo que probablemente deseas es algo como

for d in <list of impacted directories>; do
    cd "$d"
    for f in *; do
        cp "$f" foo
        rm "$f"
        mv foo "$f"
    done
    cd ..
done

Hacer esto a prueba de fallas y evitar la pérdida de datos en caso de que algo salga mal dentro del bucle se deja como ejercicio para el lector.

    
respondido por el nohillside 25.12.2016 - 18:17

Lea otras preguntas en las etiquetas