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")
diskutil verifyVolume /Volumes/Backup1234Risultato: "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.
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.
I nomi (disk4, disk5...) cambiano ad ogni riavvio o riconnessione. Prima di ogni operazione:
diskutil listNel 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)
sudo ddrescue -n /dev/rdisk5 /Volumes/PRODIGY/Backup1234.img ~/Desktop/Backup1234.logSpiegazione dei pezzi:
/dev/rdiskN— il disco sorgente, accesso raw (il prefissor= raw, più veloce di/dev/diskN)Backup1234.img— il file di destinazione: un clone bit-a-bit dell'intero disco, non una cartella di fileBackup1234.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
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.
cat ~/Desktop/Backup1234.logRighe 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.
- Verificare l'esito dal mapfile finale (vedi sopra)
- Montare l'immagine per accedere ai file:
(o dal percorso dove si trova, es.
hdiutil attach ~/Desktop/Backup1234.img/Volumes/PRODIGY/Backup1234.img) - Copiare i file reali (mp3) dall'immagine montata verso una destinazione definitiva:
rsync -avh --progress /Volumes/NomeImmagineMontata/ ~/Musica_recuperata/ - Contare i file recuperati per un controllo a occhio:
find /Volumes/NomeImmagineMontata -type f -name "*.mp3" | wc -l
- 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.
| 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 |