Да, идея правильная, но команда плохая. Если есть хотя бы одна ошибка чтения, команда dd пропустит байт, что приведет к неисправности схемы разбиения. Вы должны указать, что каждый байт копируется в одно и то же физическое местоположение (с самого начала).
$ dd if=/dev/oldsataspinningdisk of=/dev/newssd bs=64K conv=noerror,sync