Skip to content

Instantly share code, notes, and snippets.

@salvatorecapolupo
Created August 3, 2026 16:00
Show Gist options
  • Select an option

  • Save salvatorecapolupo/9a72db76989b6146b10f699b7c058a93 to your computer and use it in GitHub Desktop.

Select an option

Save salvatorecapolupo/9a72db76989b6146b10f699b7c058a93 to your computer and use it in GitHub Desktop.
Come risolvere "alcuni dati non possono essere letti o scritti" con terminale Mac

Recupero dati da disco esterno "Backup1234" — Guida e log operazioni

Il problema iniziale

Disco esterno HFS+ da 60GB con cartelle musicali. Sintomi:

  • VLC non apriva i file multimediali
  • Finder, copiando, dava errore -36 ("alcuni dati non possono essere letti o scritti")

Diagnosi

diskutil verifyVolume /Volumes/Backup1234

Risultato: "Invalid number of allocation blocks", exit code 8. Questo indica corruzione nella struttura del file system (non nei singoli file, ma nella mappa che dice dove sono i file sul disco). Un repairVolume in queste condizioni rischia di peggiorare o cancellare dati, quindi la priorità è salvare tutto prima di riparare.

Perché ddrescue e non una copia normale

Un cp o rsync normale si affida al file system per sapere dove sono i file. Se il file system è corrotto, la copia si blocca o salta file interi senza preavviso.

ddrescue ignora il file system: legge il disco blocco per blocco, a basso livello (come un fotocopiatore che scannerizza ogni pixel invece di leggere il testo). Questo garantisce di recuperare anche dati che il file system corrotto "nasconde" o rende irraggiungibili con metodi normali.

Identificare i dischi

I nomi (disk4, disk5...) cambiano ad ogni riavvio o riconnessione. Prima di ogni operazione:

diskutil list

Nel nostro caso:

  • Backup1234 (sorgente, HFS+, 60GB, con l'errore) → es. disk5
  • PRODIGY (destinazione, exFAT, 256GB, spazio libero sufficiente) → es. disk4

Verificare sempre che la destinazione sia scrivibile:

mount | grep PRODIGY

(exFAT è scrivibile nativamente su Mac; NTFS di solito no, senza driver aggiuntivi)

Il comando usato

sudo ddrescue -n /dev/rdisk5 /Volumes/PRODIGY/Backup1234.img ~/Desktop/Backup1234.log

Spiegazione dei pezzi:

  • /dev/rdiskN — il disco sorgente, accesso raw (il prefisso r = raw, più veloce di /dev/diskN)
  • Backup1234.img — il file di destinazione: un clone bit-a-bit dell'intero disco, non una cartella di file
  • Backup1234.log — il mapfile: tiene traccia di quali blocchi sono già stati copiati con successo. Permette di interrompere (Ctrl-C, riavvio, blackout) e riprendere esattamente da dove si era rimasti, senza ripartire da zero
  • -n — salta i tentativi ripetuti sui blocchi difficili al primo passaggio, per avanzare veloce sulla parte "facile" del disco e non restare bloccato a lungo su un singolo settore danneggiato

Perché l'immagine copia anche "spazio vuoto"

ddrescue clona l'intero disco a livello di blocchi grezzi: non distingue tra file, spazio libero o dati cancellati non sovrascritti. Copia tutto, byte per byte. Per questo la dimensione del file .img può avvicinarsi alla dimensione totale del disco (60GB), anche se i file musicali reali occupano molto meno spazio.

Questo è il comportamento corretto per un disco con file system danneggiato: garantisce che nulla vada perso, comprese eventuali tracce di file che la struttura corrotta rende difficili da individuare.

Leggere il mapfile

cat ~/Desktop/Backup1234.log

Righe tipo:

0x00000000  0xA78C50000  +
0xA78C50000  0x7FFF...    ?
  • pos / size: intervallo di byte del disco
  • status:
    • + = blocco recuperato con successo
    • ? = non ancora tentato
    • - = settore danneggiato, dati persi in quel punto
    • / = tentato ma non completato (da riprovare con passaggi extra)

A operazione conclusa, se il mapfile mostra un solo intervallo + che copre tutto lo spazio del disco → recupero completo al 100%, nessun file perso.

Prossimi passi (una volta completato)

  1. Verificare l'esito dal mapfile finale (vedi sopra)
  2. Montare l'immagine per accedere ai file:
    hdiutil attach ~/Desktop/Backup1234.img
    (o dal percorso dove si trova, es. /Volumes/PRODIGY/Backup1234.img)
  3. Copiare i file reali (mp3) dall'immagine montata verso una destinazione definitiva:
    rsync -avh --progress /Volumes/NomeImmagineMontata/ ~/Musica_recuperata/
  4. Contare i file recuperati per un controllo a occhio:
    find /Volumes/NomeImmagineMontata -type f -name "*.mp3" | wc -l
  5. Se il mapfile segnala blocchi - (persi), quei file specifici potrebbero risultare corrotti o mancanti — identificabili aprendo l'immagine e controllando quali mp3 non si aprono.

Riepilogo comandi chiave

Scopo Comando
Vedere dischi collegati diskutil list
Verificare volume diskutil verifyVolume /Volumes/NomeDisco
Controllare mount/scrittura mount | grep NomeDisco
Clonare disco (con skip blocchi difficili) sudo ddrescue -n /dev/rdiskN dest.img mapfile.log
Vedere stato recupero cat mapfile.log
Montare immagine clonata hdiutil attach immagine.img
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment