Ik wil een exacte kopie van de harde schijf van een computer, omdat ik wil experimenteren met upgrades maar terug wil kunnen gaan naar het oorspronkelijke systeem als het nodig is.
Voorbereiden
Een live-distro in klaarhebben om te starten van USB-stick of cd/dvd.
(Knoppix, een repairt toolkit, .. Ik gebruikte bv Rescatux 0.41 gebaseerd op Debian Jessie)
De schijven verwisselen; de nieuwe monteren als uiteindelijke harde schijf voor het toestel.
Met een bakje of een interfacekabel kan je de originele harde schijf aan je computer via usb-aansluiten.
Misschien nog gemakkelijker: computer openmaken en de harde schijf aan sluiten op het passende kabeltje (hopelijk is er nog één vrij voor een harde schijf, anders kan je de dvd-lezer losmaken en die even gebruiken, of via een (externe) sub-naar-sata kabel werken.
Live start
Je start de computer met een usb-disk met een “live” Linux op, en doet van daaruit de kopie; opletten wat bron en wat bestemming is!
Als de computer niet spontaan van de USB/DVD start, zoeken naar de bios-toetsen: Bij het opstarten een bepaalde toets indrukken als de bios meldingen komen. Ze flitsen waarschijnlijk zo snel voorbij dat je wat toetsen moet proberen, bv:
ESC (meestal om bios-meldingen te zien of bios menu te krijgen)
F9 (soms BootMenu)
..
Open een root terminal (of een terminal en gebruik sudo) voor volgende commando’s:
Let op mogelijk QWERTY instelling; dat zou verkeerde commando’s of parameters kunnen veroorzaken.
Wie geen qwerty toetsenbord bij de hand heeft:
het = (qwerty) teken zit onder – (azerty)
(qwerty) – (azerty):
het – teken zit onder )
het = teken zit onder –
het / teken zit onder =
de a zit onder de q
fdisk -l
geeft mooi overzicht, bv
/dev/sda1 Linux Swap
/dev/sda2 * Linux
/dev/sda3 Linux
/dev/sda4 ...
Het sterretje geeft de boot-disk aan, dat is normaal de partitie met het Linux systeem.
De andere partitie is die met de /home directory in mijn geval.
(en ik had nog een partitie met een ander Linux systeem om uit te proberen)
De harde schijf die aan een usb-connector hangt kan er bv zo uitzien:
dd
Harde schijf kopieren van de gebruikte disk naar de nieuwe:
dd … is het gevaarlijke commando, als je je van richting vergist, kopieer je een lege disk over je volle…
# dd if=/dev/sdX of=/dev/sdY bs=64M conv=noerror status=progress
* ps: upd 20/02/2020. Origineel had ik staan
# dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync
In sommige distro’s (Arch) kan je:
# dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync status=progress
Maar
– 64K lijkt me weinig, zeker als het op een xGB RAM pc met 2 hd’s op SATA gebeurt.
– conv=noerror doet verder werken na een lees-fout.
– status=progress is waarschijnlijk overal beschikbaar (bv opensuse 15.x)
Met status=progress krijg je (op de puntjes snel veranderende cijfers):
215......... bytes (216 GB, 202 GiB) copied, 21800 s, 103 MB/s
Stilte
Dit is zo één van die commando’s (zonder status=progress) dat geen voortgang weergeeft, je vervalt dus in een spannende stilte.
(en waarschijnlijk springt je screensaver nog aan ook)
Dat duurt bv een goed uur bij een schijf van 160 GB (en ook iets meer dan een uur voor één van 500 GB).
Daarna krijg je terug je command prompt met verslag van in en out, en eventuele foutmeldingen.
Ok, je kan toch al vroeger iets te weten komen, met het commando kill -USR1 en dan het pid nummer van het proces.
Dat moet je doen vanuit een andere terminal, het antwoord komt wel in die met het dd commando.
De PID kan je eerst opvragen of zien met bv top. Ik zie hier dd met 1469 bovenaan in top staan, dus ik doe:
kill -USR1 1469
Je krijgt dan een gelijkaardige uitvoer als die op het einde, alleen zal je zien dat er bv 214 GB copied staat, terwijl je weet dat het er 500 zijn.
Error
Een schijf van 160 GB naar een schijf van 160 GB: toch niet groot genoeg?
# dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync
dd: error writing ‘/dev/sda’: No space left on device
2442045+1 records in
2442045+0 records out
160041885696 bytes (160 GB) copied, 4476.86 s, 35.7 MB/s
ps: Deze fout hoeft niet te betekenen dat het totaal niet gelukt is. Zie verder.
Starten
De vroegere systeem-harde schijf loskoppelen en/of verwijderen.
! Alvorens de nieuwe te starten: je moet kiezen of je dit systeem onmiddellijk met internet verbonden wil hebben, of eerst offline wil checken of het goed werkt, en dus de kabel uittrekt en/of de wifi schakelaar afzet. Anders zou het kunnen dat het nieuwe systeem e-mail afhaalt en wist op de server, en dan ben je die kwijt als je terug wil naar het vorige systeem.
In principe moet opstarten juist hetzelfde verlopen als voorheen, je hebt een exacte kopie. Als je bv een menu kreeg om te kiezen tussen verschillende Linux versies/distributies, krijg je dat nu ook.
Ik kan in dit voorbeeld nadien beide distributies starten en gebruiken.
–
Foutmeldingen
* Error …
De meest voorkomende foutmeldingen hebben te maken met de syntax; controleer de preciese schrijfwijze, spaties, enz.
Sommige parameters zijn verschillend per gebruikt start-systeem, werk eventueel zonder de feedback op het scherm.
* dd:erro writing ‘/dev/loop0’: Operation not permitted
Dit is de dvd speler!
Disk /dev/loop0: 672 MiB, ...
Device
/dev/loop0p1
/dev/loop0p2