Cambia il numero di inode

-1

Ho la mia libreria musicale su un formato .dmg per la portabilità. Qualche tempo fa è successo qualcosa al file system su questo disco, ma Utility Disco è riuscito a salvare tutto. Tuttavia, un problema: tutti i numeri di inode erano incasinati e iTunes sembra dare la priorità al numero di inode sul percorso morbido dei file. Ora ho un paio di centinaia di file nella mia libreria musicale che puntano a directory piuttosto che a file. Devo, in iTunes, modificare manualmente questi puntatori. Questa è la procedura da seguire per raggiungere questo obiettivo:

  1. Duplica la directory.
  2. Elimina (rm -rf, inserirli nel Cestino non è sufficiente) nella directory originale.
  3. Cmd-I sul file in iTunes, che si lamenta quindi che il file non può essere trovato.
  4. Trova il file corretto nella finestra di dialogo di iTunes
  5. Rinomina la directory duplicata con il nome originale (iTunes ricade sui percorsi se il numero di inode è cambiato).

Questo è un po 'di PITA. C'è modo di fare qualcosa come "touch --assign-new-random-inode [nome della directory]" quindi non ho bisogno di duplicare ed eliminare molte directory (è facile fare un errore manuale qui)?

    
posta d-b 24.12.2016 - 12:56
fonte

2 risposte

-2

Ho risolto questo problema creando un servizio di Automator. Funziona così:

  1. Ottieni artista, album e numero di traccia. Mostra il file errato in Finder.
  2. Salva i valori sopra.
  3. Trova il genitore del file in (1).
  4. chmod -x sul genitore (4)
  5. Fai "informazioni" sulla traccia in iTunes. Poiché il file è inaccessibile a causa di (4) iTunes mi chiede di individuarlo.
  6. chmod + x sul genitore (4)
  7. Dato che la mia musica è in ordine / Artista / Album / Uso i valori memorizzati sopra per fare un'ingenua ipotesi su dove potrebbe essere un po 'di lavoro manuale per cercare la cartella corretta
  8. Verifica manualmente che il file corretto sia selezionato. Fatto.

Non penso di poter allegare un flusso di lavoro a questa domanda, altrimenti sarei felice di condividerlo.

    
risposta data 06.02.2017 - 16:28
fonte
1

Non c'è syscall per modificare direttamente i numeri inode. Quindi, quello che farei per realizzare ciò che vorresti è qualcosa di simile

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

Rendere questo a prova di errore ed evitare la perdita di dati in caso qualcosa vada storto all'interno del ciclo viene lasciato come esercizio per il lettore.

    
risposta data 25.12.2016 - 18:17
fonte

Leggi altre domande sui tag