12

I have a home machine running Windows 7, and I’m wondering if it would work to do a command like this:

dd if=/dev/${oldSataSpinningDisk} of=/dev/${newSSD}

Io clone the contents of the current system running on a SATA HDD to a new SSD? mainly, would Windows 7 boot and actually work?

3

Just to add up to the (perfectly fine) existing answers:

Why do you need bs=64 (Blocksize)? While I cannot tell whether it is the fastest setting at all, the simple answer is, that it runs way faster (around 4x) than the standard settings... at least on my system. Tim Williscroft states that 100M could be faster, more research could be needed was done here, have a look.

Test data here: (I cancelled the first run because it took too long imho.)

$ sudo dd if=/dev/sdb4 of=/dev/sda2 status=progress
12962501120 bytes (13 GB, 12 GiB) copied, 394 s, 32,9 MB/s
$ sudo dd if=/dev/sdb4 of=/dev/sda2 status=progress bs=64K 
13143113728 bytes (13 GB, 12 GiB) copied, 98,0026 s, 134 MB/s 

status=progress is useful to monitor what happens, alternatives to that see this "Unix&Linux" post. I would also recommend adding conv=noerror,sync for error safety.

Also by Tim Williscroft: You could add the convention conv=notrunc

What you could also look into is a trick by Mistiry that

Nobody seems to know [...] dd is an asymmetrical copying program, meaning it will read first, then write, then back. You can pipe dd to itself and force it to perform the copy symmetrically, like this: dd if=/dev/sda | dd of=/dev/sdb. In my tests, running the command without the pipe gave me a throughput of ~112kb/s. With the pipe, I got ~235kb/s. I've never experienced any issues with this method. Good luck!

While he seems to misuse the the word symmetric in sense of meaning, this would probably also be worth a try.

Comment by groxxda: "If you do this and specify a blocksize, make sure you use the same blocksize on each invocation." (The respective post is also worth reading)

| improve this answer | |
20

Yes, the idea is right, but the command is bad. If there is even one read error, the dd command will skip a byte which will cause the partitioning scheme to be faulty. You need to specify that every byte is copied to the same physical location (from the start).

dd if=/dev/oldsataspinningdisk of=/dev/newssd bs=64K conv=noerror,sync
| improve this answer | |
  • I've done this several times (never with an ssd, but I see no reason why that would be an issue) and it works great. Another issue is that your partition scheme stays the same, so if the hdd is larger, then you need to shrink down the partitions so that all of the partitions will fit on the ssd. To be clear, if your ssd is 1 terabyte and your hdd is 7 terabytes large but there is only 1 megabyte of information on it, then you'll still need to shrink the partitions on the hdd before doing this. When you're done, you're going to want to repartition the ssd so that there is no extra space. – cden Mar 10 '16 at 3:35
  • Thanks!! i'll give that a go soon. makes perfect sense. Any reason you recommend bs=64K and not something higher? seems like that would take like a week+ with a blocksize that big. – dobbs Mar 10 '16 at 3:55
  • How big is your harddrive? Last I did this was with about 500G using usb 2.0 and it took a couple of hours I think. I've always used 64K since that is what I was taught years ago (and what I wrote down in my notebook). I don't see why a larger blocksize would hurt and I also don't see why you would need to specify a blocksize at all for that matter. With that said, I think the worst case scenario is an ssd that won't boot up and a perfectly functional hdd, so you can decide if you want to experiment (barring anyone else chiming in). – cden Mar 10 '16 at 4:37
  • 7
    I would add "status=progress" to see what's going on while dd does its magic. – m4l490n Jul 28 '17 at 15:28
2

I did it recently using plain vanilla:

sudo dd if=/dev/sda of=/dev/sdb

Booted my laptop with ubuntu mate live usb.

For 1TB hdd it took ~6 hours @43mb/s, fired up my laptop with new SSD and everything (all windows and linux partitions) worked flawlessly.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.