post-header-photo

Western Digital Elements externe schijf van 1TB heeft kuren. Help!

In mijn vorige post had ik de planning voor de komende periode uitgewerkt. Zo heb ik de download van de Leeuwarder Courant weer werkend (maar moet ik dat nu nog handmatig doen, dus dat moet ik nog ombouwen), heb ik het voorbeeld van code-coverage overgetypt, dat zou ik nog verder uitwerken en heb ik nog geen tijd gehad om met Azure Data Fundamentals aan de slag te gaan.

Donderdag werd ik gebeld door een dorpsgenoot: de externe harde schijf wilde het niet meer doen. Tja, wat doe je dan? Ik ben een software-man, met hardware hoef je bij mij niet aan te komen. Maar goed, ik heb zelf eens een kapotte USB-stick gehad, waar ik geen back-ups van had en waarbij is dus mijn programma’s/code van het laatste half jaar allemaal kwijt was. En daar was ik behoorlijk ziek van. Dus, een kijkje nemen kan altijd.

De eerste indruk is positief. Als de disk aansluit op mijn laptop (een mac) krijg ik de bestanden te zien en kan ik ze ook kopiëren. Sluiten we de schijf op de andere computer aan (waar Windows op draait), dan krijgen we een foutmelding bij het openen van het bestand. Nadat ik de kopieer-actie start (eerst: kan 1 minuut duren, kan 2 minuten duren, daarna: kan 37 minuten duren) besluiten we dat ik de externe schijf meeneem naar huis, omdat ik anders niet thuis ben voor de avondklok 😁

En daar loop ik dus tegen de volgende problemen aan. Tijdens het kopiëren hoor je soms een tik en kun je de USB kabel wel lostrekken, dan kopieer je niets meer. Vervolgens weer aansluiten, vaak wordt dan de externe schijf niet gedetecteerd. Dus weer lostrekken, weer aansluiten. Even wachten, pakt ie ‘m? Nee, weer niet. Weer lostrekken, weer aansluiten.

Dat doe je soms een kwartier lang en dan pas is er (even) verbinding en kun je weer bestanden kopiëren. En dan wordt het een langdurige klus. Donderdag 25 februari iets van 4 uur bezig geweest, vrijdag 26 februari ook 4 uren, zaterdag 27 februari ‘s middags gestart, na het eten weer door. Op mijn scherm hier tussentijds naar 2 DVDs gekeken, Misery (naar het boek van Stephen King) en The Dark Knight. En tussendoor steeds aansluiten, lostrekken. Tot zondagochtend 00:55 uur doorgegaan en toen de boel afgesloten. Zondag 28 februari in de ochtend en in de middag (tussendoor nog een blokje omgelopen) en in de avond afgerond. Uiteindelijk 3.552 bestanden succesvol over kunnen zetten, 8 bestanden niet (die zijn corrupt, of de schijf is op die plekken beschadigd).

Ik noem dit mijn “pitbull-mentaliteit”, je zet je tanden in een probleem en pas als het klaar is (of zo goed als klaar) laat je het weer los. Als ik het zo optel kom ik rond de 25 uur uit die ik hier aan besteed heb.

Als je nu denkt, dit probleem heb ik ook, dan hoef je hiervoor niet bij mij te komen, want dit was wat mij betreft een éénmalige actie. Daarom hieronder de stappen hoe je het zelf op kunt lossen.

Stap 1: gebruik Linux of een MAC, maar geen Windows

Op mijn eigen Windows PC kreeg ik niets te zien. Wel via de USB dat er een WD-xxx aangesloten is (en dat je die kunt loskoppelen), maar geen schijf waar je wat mee kunt. Ik vermoed dat Windows meer data qua boomstructuur opvraagt en de schijf dit niet (meer) kan. Dus sluit de schijf aan op een laptop of PC met Linux of op een Mac. Heb je die niet? Download dan een LIVE-cd van bijvoorbeeld Ubuntu, brand die op CD (of installeer deze op een USB-stick als je daarvan kunt opstarten) en start je computer daarmee op. Hier meer uitleg: link.

Stap 2: Terminal en het “mounten”

Als je de externe schijf aansluit en dat gaat goed, dan krijg je de schijf als snelkoppeling op je bureaublad. Maar qua kopiëren gaan we alles via Terminal doen. Die is wel ergens onder “Programma’s” en “Hulp-programma’s” te vinden. Je komt dan als het goed is in een eigen map binnen /Users (afhankelijk of je binnen Linux of op een Mac werkt).

De externe schijf is bereikbaar via een map onder /Volumes

Stap 3: basiscommando’s

Typ het commando en druk dan op Enter

ls -l

Met ls -l zeg je “toon me alle bestanden en mappen in de huidige map”.

mkdir herstel

Met mkdir [NAAM] maak je een nieuw map aan in je huidige map, wij gaan deze herstel noemen.

chdir ..

Met chdir .. zeg je “ga naar de vorige map”. Als je daar ls -l doet zie je hoe de map heet waar je in stond (bijvoorbeeld dirk).

Dus je weet dat de bestanden straks naar /dirk/herstel moeten.

Doe nog een keer chdir .. totdat je uitkomt in / (de hoofdmap). En schrijf de tussenliggende mappen op, zodat je weet waar de bestanden straks heen gekopieerd moeten worden (bijvoorbeeld /Users/dirk/herstel ).

chdir /Volumes
ls -l

Met bovenstaande commando’s ga je naar de “mount-map” en kun je zien hoe de externe schijf heet. In mijn geval was het /Volumes/Elements. Dus: chdir /Volumes/Elements
Daar kun je dan weer ls -l uitvoeren om te zien welke mappen je wilt kopiëren (laten we deze klantenmap noemen. Onder klantenmap staat map 001 klant A en 002 klant B).

cp -n -R /Volumes/Elements/klantenmap /Users/dirk/herstel

Met bovenstaand commando (cp) kopieer je bestanden. Met -n zeg je: als het bestand al bestaat, dan niet vervangen. En met -R zeg je: zorg dat ook de onderliggende mappen gekopieerd worden (dus 001 klant A en 002 klant B).

Stap 4: heb ik alles gekopieerd en ook correct?

Bij mij werd de kopieer-actie regelmatig afgebroken. Hierdoor leek het alsof bestanden wel gekopieerd waren, maar ze waren 0 kB! En op een bepaald moment wil je weten, hoe ver ben ik nu? Heb ik alle mappen, submappen en bestanden nu gekopieerd?

chdir /Users/dirk
ls -l -R /Volumes/Elements/klantenmap > externedisk.txt
ls -l -R /Users/dirk/herstel/klantenmap > lokaal.txt

Met bovenstaande commando’s schrijf je het overzicht van de mappen en bestanden op je externe schijf naar het bestand /Users/dirk/externedisk.txt en de bestanden die je gekopieerd hebt in het bestand /Users/dirk/lokaal.txt

Dit kan er zo uitzien:

In externedisk.txt:

/Volumes/Elements/klantenmap/001 Klant A:
total 1240
-rwxr-xr-x 2 dirk staff 9040 bestand1.pdf
-rwxr-xr-x 2 dirk staff 9051 document.docx
drwxr-xr-x 1 dirk staff 4096 20 mrt 2020 Toelichting
-rwxr-xr-x 2 dirk staff 569344 berekening-2019.xls

In lokaal.txt:

/Users/dirk/klantenmap/001 Klant A:
total 1105
-rwxr-xr-x 2 dirk staff 0 bestand1.pdf
drwxr-xr-x 1 dirk staff 4096 20 mrt 2020 Toelichting
-rwxr-xr-x 2 dirk staff 569344 berekening-2019.xls

Je ziet hierboven dat bestand1.pdf niet goed gekopieerd is (0 kB!), dat document.docx mist, 20 mrt 2020 Toelichting is een map (de regel begint met een d van directory), dus die negeren we, het gaat ons om de bestanden. En we zien dat berekening-2019.xls wel goed gegaan is.

chdir /Users/dirk/klantenmap/001\ Klant\ A
rm bestand1.pdf

Met bovenstaande commando’s ga je naar je lokale schijf en verwijder je het bestand van 0 kB om het opnieuw te proberen.

Stap 5: dat ga je toch niet handmatig doen!

Inderdaad, ik ga natuurlijk niet alle mappen en bestanden handmatig met elkaar vergelijken (3.552 stuks!!!), dus ik heb een programma gemaakt. Daar laad je de 2 tekstbestanden in, die doorloopt het bronbestand (dus externedisk.txt) en gaat dan vervolgens controleren of in het doelbestand (lokaal.txt) de bestanden aanwezig zijn en zo ja, of ze dezelfde grootte hebben.

De code hiervan staat op Github, je kunt hier in de map “compiled” het exe-bestand en het exe.config-bestand vinden. Dit laatste bestand kun je in kladblok openen om de waardes in te stellen.

Locatie: https://github.com/lordofcode/csharp.compare.ls-files 

In het onderstaande filmpje kun je nog even zien hoe het ging. Als het lampje knippert, is het OK. Als het lampje constant blijft branden, dan krijg je geen connectie en moet je het nogmaals proberen…