two commands: dd and resize2fs, assuming you’re using ext4 and not something more exotic.
one makes a block-level copy of one device to another like so: dd if=/dev/source-drive of=/dev/destination-drive
the other is used to resize the filesystem from whatever size it was, to whatever size you tell it (or the whole disk; I’d have to go read a manpage since it’s been a bit)
the dd is completely safe, but the resize2fs command can break things, but you’d still have the data on the original drive, so you could always start over if it does - i’d unplug the source drive before you start doing any expansion stuff.
Why not save time and do it the other way?
Install the minimal/netinstall image, and then add what you need.
You’ll probably spend less time adding than trying to figure out what’s installed that you do or don’t need and trying to remove random packages without breaking anything.