Sign in to follow this  
quicksilver

Disco WD Elements Desktop (WDBAAU0020HBK) problemi e comportamenti inspiegabili lento

Recommended Posts

Sostituisci le ultime due linee con "print..." con le seguenti:

$, = "     \t";print "Keep these files (they contain damaged blocks), delete the others:";print @damaged;$, = "\n";open(OUTPUT, '>', 'keep_these.txt') || die "Error reading writing 'keep_these.txt', $!";print OUTPUT @damaged;close(OUTPUT);

e rieseguilo.

Ho cambiato la visualizzazione dei file da eliminare rendendola più compatta (non sono più uno solo per riga) e ho generato un file "keep_these.txt" con la lista completa.

Se non hai errori fammi vedere cosa ne esce (taglia via la lista di file da cancellare, non mi interessa) e ti dico come procedere.

Ciao Olaf grazie per la modifica ho provato però a parte il file di testo non è cambiato molto, cioè ho il documento con all'interno i blocchi danneggiati da mantenere sul disco ma questi sono si più facili da leggere ma trovarli rimane comunque un'impresa su 2TB di disco con file da 10MB.

Lo script a parte segnarli nel file di testo cosa dovrebbe fare? Non lo si può impostare che i file da tenere vengano cambiati di nome o che gli venga assegnata un'etichetta rossa?

Share this post


Link to post
Share on other sites

Svuota i messaggi privati.

Hai ricevuto errori eseguendo lo script?

Se no, fai (dalla cartella con i files)

mkdir Tenere

for each i in $(cat keep_these.txt); do mv $i Tenere/; done

e così te li sposta, poi cancelli il resto.

Share this post


Link to post
Share on other sites

Svuota i messaggi privati.

Hai ricevuto errori eseguendo lo script?

Se no, fai (dalla cartella con i files)

mkdir Tenere

for each i in $(cat keep_these.txt); do mv $i Tenere/; done

e così te li sposta, poi cancelli il resto.

Ho svuotato i messaggi privati già prima quando non mi è arrivato il messaggio che avevi tentato di inviarmi, risultano ancora pieni?

Ho fatto i due comandi dopo quello in perl ma il secondo da errore di sintassi per un token inaspettato (i) ho provato senza la I ma fa qualcosa per due ore senza spostare niente

Share this post


Link to post
Share on other sites

Controlla che il nome del file "keep_these.txt" coincida col nome vero, poi togli eventuali linee vuote all'inizio o alla fine di tale file, poi puoi provare di nuovo.

E togli "each", stavo scrivendo in visual basic e ho fatto confusione:

for i in $(cat keep_these.txt); do mv $i Tenere/; done

Share this post


Link to post
Share on other sites

Controlla che il nome del file "keep_these.txt" coincida col nome vero, poi togli eventuali linee vuote all'inizio o alla fine di tale file, poi puoi provare di nuovo.

E togli "each", stavo scrivendo in visual basic e ho fatto confusione:

for i in $(cat keep_these.txt); do mv $i Tenere/; done

Ok Funziona... O meglio non funziona ma per una questione di nome dei file da spostare, lo script sh li scrive con nomi da 6 cifre esclusa estensione mentre lo script perl li riporta col nome a cifra tonda escludendo gli zeri davanti per cui non si ritrovano :)

Share this post


Link to post
Share on other sites

Correggi $threshold ovviamente

#!/usr/bin/perl -w# (C) Olaf Marzocchi, 2012use strict;my $threshold = 75000000;# 512 KiBmy $resolution = 524288;open (INPUT, '<', 'speeds.txt') || die "Error reading speeds.txt, $!";my @speeds = <INPUT>;close (INPUT);my @stats;my @damaged;$, = "\t";$\ = "\n";for (my $i = 0; $i < @speeds; $i++) {	$stats[int (($speeds[$i] / $resolution) + 1)]++;	push @damaged, $i  if ($speeds[$i] < $threshold);}for (my $i = 0; $i < @stats; $i++) {	$stats[$i] = 0 unless defined($stats[$i]);	print $i * $resolution, $stats[$i];}$, = "     \t";print "Keep these files (they contain damaged blocks), delete the others:";print @damaged;$\ = "\n";open(OUTPUT, '>', 'keep_these.txt') || die "Error reading writing 'keep_these.txt', $!";foreach my $i (@damaged) {	print OUTPUT sprintf("%06.0f.zero", $i);}close(OUTPUT);

Share this post


Link to post
Share on other sites

Sembra funzionare in tutto e per tutto :) veramente un ottimo risultato.

L'ho provato solo su pochi GB perchè ora non ho tempo ma visto il comportamento pensavo di rifarlo da zero su tutti i dischi.

Dovrebbe continuare a funzionare.

Hai pensato che magari potrebbe essere interessante farne una versione con interfaccia grafica da vendere su App Store? Non so quanto più complesso possa diventare scriverci sopra una GUI ma penso che qualcuno lo comprerebbe. Io di sicuro come minimo a riconoscenza del lavoro fatto.

Share this post


Link to post
Share on other sites

Io non ho idea di come scrivere una GUI, al limite posso farlo in VB .Net.

Se lo fai sull'intero disco mandami per mail tutti i file speeds.txt che voglio vedere cosa ne esce fuori.

Ho tentato di farlo in un colpo solo ma dopo una giornata a copiare ho trovato il disco scollegato e l'applicazione a terminale piena di errori, stranamente non c'era la classica finestra del finder che dichiarava uno scollegamento forzato.

Allora ho aperto idefrag e ho visto che i file non erano neanche stati scritti in modo del tutto continuo, ho riformattato e sto rifacendo tutto ma con blocchi da 250GB alla volta...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this