There are several approaches you can fallow…
For a good, though and free solution, you can give Clonezilla a try.
I’m using it in relatively small environments for some years now with very good results.
It works disk-to-disk, partition-to-Partition and even over the network.
It is really good.