dd : 여러 디스크에 쓰기?


16

정확히 2 개의 동일한 형식, 동일한 크기 및 동일한 브랜드 SD 카드가 있습니다. 동시에 dd이미지를 /dev/disk2만들고 싶습니다 /dev/disk3.
의사 코드

sudo dd bs=1m if=/Users/masi/2016-05-10-raspbian-jessie.img of={/dev/disk2,/dev/disk3}

dd하나의 입력에서 많은 출력 SD로 어떻게 연결할 수 있습니까?


목표는 무엇입니까? 공연? 그렇다면 기억하는 데이터가 캐시된다는 것을 기억하십시오. 따라서 두 번째 dd는 읽기 대신 bcache의 데이터를 제공합니다 (물론 약간의 여유 RAM이 필요합니다).
KWubbufetowicz

2
GNU coreutils dd를 사용한 간단한 테스트 ... of=one of=two는 두 가지 출력을 생성하지 않았습니다. 두 가지 dd명령이 필요할 수 있습니다. dd 에 대해 복수를 허용하는 posix의 문구가 표시되지 않습니다 of.
Jeff Schaller

@KWubbufetowicz 8GB RAM이 있습니다. 32GB를 얻을 수 있습니다. SD가 5 개인 속도가 목표입니다.
Léo Léopold Hertz 준영

답변:


20
  1. 을 사용 하지만 bash isms를 사용 하거나 사용 하지 않고 don_crissti 의 답변 에서 차용 :teedd

    sudo tee /dev/disk2 /dev/disk3 > /dev/disk4 < masi.img
    
  2. pee데비안의 moreutils 패키지 에서 사용하기 :

    sudo dd if=masi.img | \
      pee "dd of=/dev/disk2"  "dd of=/dev/disk3"  "dd of=/dev/disk4"
    

    bash, ksh또는 zsh그이하는 축약 할 수있다 :

    sudo dd if=masi.img | pee "dd of=/dev/disk"{2..4}
    

    또는 ( dd의 유용한 기능이 필요하지 않은 경우 ) :

    sudo pee "dd of=/dev/disk"{2..4} < masi.img
    

    pee유용하다; 필요한 경우, 인용 된 각 인수 내에서 추가의 개별 dd옵션 및 각 파이프에 개별적으로 맞춰진 다른 파이프 및 필터를 포함 할 수 있습니다.

두 가지 방법을 사용하면 출력 디스크 수를 무한대로 확장 할 수 있습니다.


1
이를 위해 dd를 사용할 필요는 없습니다. 많은 사람들은 디스크 이미지로 또는 디스크 이미지에서 복사하는 데 사용되는 사용법이 90 년대에 작성된 자습서에서 "화석화"되어 있고 이유를 모르는 사람들이 복사했기 때문에 필요하다고 생각합니다. 당시에는 cp의 결함을 해결하는 데 사용되었습니다.
Random832

@ Random832보다 안정적이므로 필요합니다 cp. 많은 형식과 다른 할당 크기를 시도하십시오. 나는 cp그 일에 충분한 안정 을 찾지 못했다 . cp충분히 안정적인 방법을 주장 할 수 있다면 여기로 답해주십시오 .
Léo Léopold Hertz 준영

@Masi 디스크 이미지를 디스크에 쓰거나 디스크를 읽는 일반적인 목적으로 형식 ( "포맷"으로 무엇을 의미 하는가)과 할당 크기 (블록 크기를 의미 하는가)를 명시 적으로 선택할 필요 는 거의 없습니다 . 디스크 이미지. dd가이 목적으로 일반적으로 사용 된 이유는 90 년대 초 cp의 버그 (특히 Linux의 GNU cp)가 0 바이트 인 블록 복사를 건너 뛰었 기 때문입니다.
Random832

7
cp90 년대의 버그 ? dd그보다 20 살이 더 깁니다. 사용하는 주된 이유는 dd이유입니다, 고정 블록 크기로 작성 읽을 수 있도록 필요한 많은 장치, 특히 테이프 드라이브를 /했다 ddbs, ibs그리고 obs매개 변수, 그리고 올바른 블록 크기를 보장 할 수있는 유일한 프로그램이었다.
Guntram Blohm은 Monica를

1
@Gilles, 여기 오줌 보다 선호됩니다 (그러나 dcfldd 가 가장 좋습니다). 그래도 오줌 은 유용합니다. 필요한 경우, 인용 된 각 인수 내에서, 추가 'dd'옵션, 심지어 각 출력 장치에 개별적으로 맞춰진 다른 파이프 및 필터를 포함 할 수 있습니다.
agc

20

당신은 그것을 시도 할 수 있습니다. 향상된 버전이며 동시에 여러 파일이나 디스크로 출력 할 수 있습니다dcfldd
gnu dd

dcfldd if=masi.img of=/dev/disk2 of=/dev/disk3 of=/dev/disk4

첫 번째 명령을 설명해 주시겠습니까? 왜 마지막 전에 파이프를해야 dd합니까? 파이프의 위치는 4로 dd어떻게 바뀌 나요?
Léo Léopold Hertz 준영

3
dcfldd가장 빠른 방법 일 것입니다.
agc

3

또한이 가능합니다 teeprocess substitution:

dd if=/dev/sda | tee >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd


프로세스 대체를 설명 할 수 있습니까? 귀하의 답변은 agc의 답변과 어떻게 다릅니 까?
Léo Léopold Hertz 준영

그렇습니다 : process substitution하나의 명령의 표준 출력을 여러 명령으로 파이프해야 할 때 사용됩니다. 간단한 파이프를 사용하면 하나의 명령으로 파이프 할 수 있습니다. 내 대답은 agc와 동일한 결과를 얻지 만 다른 방식으로 :) 또한 시스템에 명령 pee이 있기 때문에 이전에는 사용하지 않았습니다 tee.
chevallier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.