Для обычного копирования файлов в * nix, я когда-либо видел, чтобы люди использовали cp (например, cp /mnt/mydevice/myfile ~/myfile
), но в итоге я столкнулся с dd
, который, кажется, делает то же самое (dd if=/mnt/mydevice/myfile of=~/myfile
). Я вижу, что у них есть несколько различных доступных параметров (dd кажется лучше при точном копировании), но они кажутся избыточными. Эти инструменты действительно делают то же самое?
2 ответа
Чтобы ответить на ваш главный вопрос, нет, они не делают то же самое.
dd работает с указанным вами файлом, что позволяет копировать данные между устройствами или с устройства в файл. Это обычно используется для перемещения данных, если специально задействованы устройства (например, создайте ISO-образ с диска CD-ROM: dd if =/dev/cdrom of = mycdrom.iso) или для резервного копирования необработанных устройств (иногда используется в базах данных RAC). : dd if =/dev/raw/raw1 of = device_raw1)
cp используется для дублирования содержимого файла в новый файл или в новое место. вещи, которые вам особенно нужны, - это сохранение владельца, метка времени и режим (права), а также возможность повторения операции (= возможность копирования каталогов).
Они делают то же самое, ЕСЛИ ВЫ не указали одну из опций dd
которая ограничивает количество копируемых байтов, например, seek
или skip
или count
или если вы используете опции dd
для изменения байтов, таких как conv
. Если вы не используете одну из этих опций для dd
и просто используете наиболее часто встречающиеся опции, например if
, of
, bs
тогда обе утилиты делают одно и то же: открывают оба файла, читают из ввода, записывают в вывод до тех пор, пока вход исчерпан или выход не может принять больше байтов.
Существует много суеверий о чтении и записи файлов "устройств", утверждающих, что вы должны использовать для них dd
, но это просто суеверие. dd
ничего не делает, мы просто открываем файлы, читаем и пишем байты.