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