MV saltare file danneggiati

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
darkstaring
Linux 3.x
Linux 3.x
Messaggi: 657
Iscritto il: mer 13 ott 2010, 13:55
Nome Cognome: Francesco Achenza
Desktop: KDE
Distribuzione: Arch Linux
Contatta:

MV saltare file danneggiati

Messaggio da darkstaring »

Seraaa...

Ho un' harddisk con partizione ntfs danneggiata... ho provato ad eseguire chkdsk da windows e ntfsfix con linux.. ma non riesco a riparare il filesystem...

Ora vorrei salvare tutti i file non danneggiati su un'altro disco ma se eseguo solo "mv -R" quando trovo un file danneggiato l' hd si blocca e la copia non và più avanti..

Esiste un parametro da dare a mv che salti i file danneggiati?? sul man non ho trovato niente..
Altri consigli???

Grazie

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Re: MV saltare file danneggiati

Messaggio da useless »

Prova a usare cp invece che mv! Nel caso peggiore puoi farti un'immagine del disco con dd_rescue.

Avatar utente
darkstaring
Linux 3.x
Linux 3.x
Messaggi: 657
Iscritto il: mer 13 ott 2010, 13:55
Nome Cognome: Francesco Achenza
Desktop: KDE
Distribuzione: Arch Linux
Contatta:

Re: MV saltare file danneggiati

Messaggio da darkstaring »

Eviterei di far la copia di tutta la partizione..l'hard disk è dà 500Gb e i files da copiare sono pochissimi, con dd copierei anche i settori che non fanno parte di un file?
io preferirei copiare o spostare i files presenti e non i settori, magari mantenendo la struttura delle directory...
la cosa ideale sarebbe qualcosa del tipo ignora se il file è danneggiato.. ho cercato con mv,cp, rsync ma sembra non ci sia un'opzione che lo permetta.

è possibile fare un controllo di integrità del file prima di copiarlo?

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Re: MV saltare file danneggiati

Messaggio da useless »

Con dd/dd_rescue copieresti il block device, quindi tutto tutto tutto, ma a mio avviso è la soluzione migliore, così poi recuperi i dati con comodo e senza timore che il disco muoia da un momento all'altro.

Mi sembra che cp non si interrompa se durante la copia di un file si verifica un errore, ma non sono sicuro. Se i file da copiare sono pochissimi puoi fare trial-and-error a mano :p.

Per fare un controllo di integrità puoi provare qualcosa del genere:

Codice: Seleziona tutto

#!/bin/sh

if cat "$1" > /dev/null
then
  mkdir -p "$(dirname "$1")"   # Non sono troppo sicuro di questo!
  exec cp "$1" "$2"
else
  echo "File $1 illeggibile"
  exit 1
fi
Ma non è detto che funzioni, probabilmente dipende dal tipo di errore che si verifica, e non sono troppo sicuro che crei bene le sottodirectory. Questo dovresti lanciarlo tramite find all'interno della directory da salvare, tipo:

Codice: Seleziona tutto

find "/mnt/discomorto" -type f -exec script.sh "{}" /mnt/dovecopiareifilebuoni \;
Ma chi lo sa se funzionerà? Insomma, prendilo più che altro come spunto su cui lavorare :).

In ogni caso, ti consiglio di montare il disco morto in readonly (-o ro)!!!

Edit: Ripensandoci, ecco una versione un po' più furba dello script, usala a tuo rischio e pericolo:

Codice: Seleziona tutto

#!/bin/sh

mkdir -p "$(dirname "$1")"   # Non sono troppo sicuro di questo!
if ! cp "$1" "$2"
then
  echo "File $1 illeggibile"
  rm "$2/$(dirname "$1")"  # Funzionerà???
  exit 1
fi

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: MV saltare file danneggiati

Messaggio da ZeroUno »

find /mnt/discomorto -type d -exec mkdir -p "{}" \;
find /mnt/discomorto -type f -exec mv -v "{}" "/mnt/dovecopiareifilebuoni/{}" \; > fileok.log 2>filebad.log

oppure

find /mnt/discomorto -type d -exec mkdir -p "{}" \;
find /mnt/discomorto -type f -ls -exec dd if="{}" of="/mnt/dovecopiareifilebuoni/{}" conv=noerror \; >mv.log 2>&1

nel secondo caso se il file è danneggiato lui lo copia lo stesso mettendo degli zeri al posto dei settori danneggiati.
Ma, in entrambi i casi, aspettati tempi mooolto lunghi sui file che si trovano sui settori danneggiati.

se vuoi una barra di avanzamento sul singolo file usa bar
find /mnt/discomorto -type f -ls -exec bar -if "{}" -of "/mnt/dovecopiareifilebuoni/{}" --display-bar \;

quest'ultimo a differenza di dd non gestisce gli errori alla dd ma almeno sai a che velocità ti sta copiando.

nota: tutte le soluzioni NON sono testate!!!
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Re: MV saltare file danneggiati

Messaggio da useless »

ZeroUno ha scritto: find /mnt/discomorto -type d -exec mkdir -p "{}" \;
find /mnt/discomorto -type f -ls -exec dd if="{}" of="/mnt/dovecopiareifilebuoni/{}" conv=noerror \; >mv.log 2>&1
Ottima idea! =D> Alla fine è come il mio script ma decisamente più comodo. Se sostituisci dd_rescue a dd, con opportuni valori di -B e -b puoi anche cavartela (relativamente) in fretta. 8)

Rispondi