Назад | Перейти на главную страницу

dd vs. dd pipe pipeline: что лучше?

Вот Я читал в комментариях, что у парня было больше производительности при использовании dd в конвейере для копии. Как например:

dd if=in | dd of=out

вместо того

dd if=in of=out

Действительно ли это быстрее? Зачем? Также: он говорил о симметричном и асимметричном копировании. Не мог бы кто-нибудь объяснить мне это лучше, пожалуйста?

Это был интересный вопрос, поэтому я провел несколько тестов. Судя по моему тестированию, копирование с одного и того же диска было на самом деле медленнее с использованием канала (значительно - 40 секунд вместо 30, воспроизведенных несколько раз.

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

Таким образом, я прихожу к выводу, что в общем случае он не быстрее и может быть даже медленнее, однако могут быть некоторые угловые случаи, когда он может быть быстрее.

Я думаю, что то, что автор имел в виду под симметричным / асимметричным, было синхронным / асинхронным - IE в случае «dd if = in of = out» считывал данные, а когда это было сделано [для блока], он записывал данные и повторял пока этот процесс не был завершен. Во втором случае он делает вывод, что прочитал данные, а затем во время чтения записал данные на второй диск, используя поток. Это правдоподобно - хотя мои тесты не подтвердили увеличения скорости - конечно, я могу придумать множество вариантов, которые стоит попробовать, некоторые из которых действительно могут быть быстрее - хотя я бы предположил, что использование блоков большего размера - лучший способ чтобы увеличить скорость.