dd bs=4M if=archlinux.iso of=/dev/sdx status=progress oflag=sync
do ie 또는 do 의 차이점은 무엇이며 cp archlinux.iso /dev/sdx && sync
, 둘 중 하나를 사용해야 하는 이유가 있나요? (dd의 아름다운 진행률 표시줄 외에도)
답변1
차이점 중 하나는 효율성과 속도입니다. 예를 들어, 바이트를 하나씩 가져와 장치에 복사할 수 있습니다 cat
.이상적인 구현또는 이전 시스템에서는예를 들어 BSD4:
cat archlinux.iso > /dev/sdx
이러한 구현에서는 cat
각바이트독립적인. 버퍼가 실제로 관련되어 있지만 이는 느린 프로세스입니다. 최신 cat
구현에서는 청크로 읽습니다(아래 참조).
그리고 dd
그리고ㅏ좋아요블록 크기더 빨라질 것입니다.
이는 버퍼 크기(사용자가 제어할 수 없음)와 cp
다른 버퍼에서 사용하는 버퍼 크기에 따라 다릅니다. cp
효율성은 이상적인 구현 cat
과 dd
최적의 블록 크기 사이에 있습니다.
실제로는 현대적이지만 시스템이 요구됩니다 cat
.cp
선호하는 블록 크기:st_blk 크기. 꼭 그렇지는 않다는 점 참고하세요최적의 블록 크기.
비유하자면 한 잔의 내용물을 다른 잔에 붓는 것과 같습니다.
이상화는
cat
한 번에 한 방울씩 올 것입니다.dd
숟가락이 사용되며 숟가락의 크기를 정확히 정의합니다(시스템 제한).cp
현대인은cat
자신의 숟가락을 사용합니다(stat -f -c %s filename
그리고 그것이 얼마나 큰지 알려줍니다).
답변2
나는 주로 당신이 언급한 것 때문에 그것을 사용합니다 status=progress
. 내가 말할 수 있는 것은, 나는 참을성이 없고 필요합니다.알다:-)
추가하고 작업을 시작하는 것을 잊어버린 경우에도 SIGUSR1 신호를 보낼 수 있으며 현재 I/O 통계를 stderr(리디렉션하지 않는 한 터미널)에 인쇄합니다.