Repository 32bit  Forum
Repository 64bit  Wiki

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.

MV saltare file danneggiati

Messaggioda darkstaring » sab nov 17, 2012 15:31

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
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 373
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: MV saltare file danneggiati

Messaggioda useless » lun nov 19, 2012 9:09

Prova a usare cp invece che mv! Nel caso peggiore puoi farti un'immagine del disco con dd_rescue.
Avatar utente
useless
Staff
Staff
 
Messaggi: 3896
Iscritto il: sab ott 11, 2003 23:00
Località: A place where the streets have no name

Re: MV saltare file danneggiati

Messaggioda darkstaring » lun nov 19, 2012 22:25

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?
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 373
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: MV saltare file danneggiati

Messaggioda useless » mar nov 20, 2012 8:58

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
useless
Staff
Staff
 
Messaggi: 3896
Iscritto il: sab ott 11, 2003 23:00
Località: A place where the streets have no name

Re: MV saltare file danneggiati

Messaggioda ZeroUno » mer nov 21, 2012 14:06

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
ZeroUno
Staff
Staff
 
Messaggi: 4414
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: MV saltare file danneggiati

Messaggioda useless » gio nov 22, 2012 13:00

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)
Avatar utente
useless
Staff
Staff
 
Messaggi: 3896
Iscritto il: sab ott 11, 2003 23:00
Località: A place where the streets have no name


Torna a Slackware

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite