Running W10 from Expansion Card - How do I create a reusable backup?

Hello together!

Just received my Framework. I am running Windows 10 on a 1TB Expansion Card for the few cases i need Adobestuff or want to play some games.
I applied a thermal pad, combined with my egpu I W10 runs quite well, better than my P70 at least.

Now to my question, i do not trust the longevity of the expansion card in my use case yet.

I would like to make an exact copy of the 1TB Card with everything on it including the partitions.

The idea is to be able to just put everything on a new card ready to go if necessary.

Installing Windows to the expansion card was a pain, installing programs, drivers, etc also takes time.

How can i achieve this? Any tools that are recommended? Either for creating the backup or for later putting everything back onto a new card?

Thanks in advance!

boot linux (live if necessary) and dd it, either to a file or to another card

so i will get something like a .iso which i can later flash with something like rufus to a new expansion card?

you’ll get a complete bit by bit image of the device, which you can then dd to another equivalent or larger capacity storage device.

Hi, maybe you can help me out a litte more?

I get that it should look something like this:

dd if=/dev/sda bs=1k | gzip > backup.image.gz conv=noerror
where sda is my expansion card.

The new Image would be 1tb though. Can i somehow block out or ignore the “unused” space? my understanding is that dd will mot differentiate between “used” and “unused”.


there is no difference as far as dd is concerned. The way to do it would be to defragment the win10 installation so that all the data is consolidated at the beginning of the drive and use the bs and count arguments to stop the dd after the amount of used space is passed, eg if you have the first 20GB used you would use something like bs=1M count=25000 to dd the first 25GB.

don’t use bs=1k, it will take forever. use bs=1m or 4m or something.

The count variable is calculated from the amount you want to dd divided by the blocksize (bs) variable, 1M is 1 megabyte. and always add a few GB extra to be sure you have everything.

EDIT: also your conv=noerror needs to be BEFORE the pipe character. it’s a dd parameter, not a gzip parameter

EDIT: make sure you use an SSD specific defragmenter.

EDIT AGAIN: a full dd shouldnt actually be that bad since you’re gzipping it. the unused space should compress to almost nothing.

1 Like