Например, я могу сделать:
cat /dev/sda1 > /dev/sda2
вместо использования dd, и если нет, то почему это не сработает?
В принципе, вы можете использовать либо. Есть несколько важных отличий, но ни одно из них здесь не применимо.
Когда вы используете > перенаправление, целевой файл открывается и усекается. Только тогда это написано. Однако это не относится к блочным устройствам - они имеют фиксированный размер, поэтому «усечение» им ничего не дает.
С помощью cat вы не можете легко сказать, что нужно копировать только первые n байтов или пропускать / искать. Это то, для чего полезен dd.
cat не позволяет указать размер блока. Это не имеет значения сегодня, когда размеры блоков маскируются используемыми файловыми системами, но это имело значение для различий, где устройства будут считываться с определенными размерами блоков (лентами).
Для жестких дисков cat может быть немного быстрее (даже лучше, чем dd с правильно выбранным размером блока, не говоря уже о значении по умолчанию, которое замедляет работу).