Что именно делает команда dd?

8

Несколько дней назад я был рад узнать, что не так сложно записать ISO-образ на USB без помощи сторонней программы, специально предназначенной для этого. Но команда (или программа), которая облегчает это - дд - озадачивает меня.

Согласно Википедии, она предназначена для копирования и преобразования необработанных данных, но, честно говоря, я считаю это определение очень двусмысленным и расплывчатым. Я понимаю, что это позволяет вам превращать один фрагмент данных в другой, но что произойдет, если указанный выходной файл слишком мал, чтобы превратить его в указанный входной файл?

dd if=giant_file of=tiny_file

Кроме того, когда я создаю загрузочный USB-файл с файлом образа, USB-файл получает тип файловой системы isofs , но если я записываю архив или исполняемый файл на диск, он сохраняет свой обычный тип файловой системы.

Любое разъяснение того, что на самом деле делает команда dd или как она работает на более низком уровне, будет высоко ценится. Спасибо!

ICoffeeConsumer
источник

Ответы:

8

ddделает побайтовую копию из источника в место назначения с необязательным преобразованием, указанным в convаргументе. Он выполняет операции чтения и записи , как указано *bsи *flagопций, с диапазоном , определенной count, skipи seekварианты.

что произойдет, если указанный выходной файл слишком мал для преобразования в указанный входной файл?

Если ofон слишком мал для хранения, ifданные усекаются для соответствия. Обратите внимание, что если ofэто обычный файл, он перезаписывается.

Игнасио Васкес-Абрамс
источник
1
ofперезаписывается, даже если это не файл - это очень хороший способ (случайно?) уничтожить раздел / диск! Вот почему очень важно выполнить двойную и, возможно, тройную проверку места назначения, если это диск / раздел, чтобы убедиться, что у вас есть правильный.
Боб
1
Технически он пишет в объект, а не перезаписывает его.
Игнасио Васкес-Абрамс
Спасибо за ответ. Что делать, если вы не включили никаких аргументов, но делаете что-то вроде dd if=executable of=archive.tar, предполагая, что они оба имеют одинаковый размер. Будет ли архив безупречно преобразован в исполняемый файл?
ICoffeeConsumer
1
Он будет делать байт-в-байт копию с executableдо archive.tar512 байт в то время. Это не превратит бинарный файл в архив.
Игнасио Васкес-Абрамс
5

Я даже не буду пытаться обобщать, что находится в этих ссылках, но вы можете найти их полезными (или слишком много информации ) ... Они оба из Unix и Linux (stackexchange)

Peter.O
источник