답변:
bash의 "프로세스 대체"를 tee 명령과 함께 사용하여이를 수행 할 수 있습니다.
cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd
또는 명확성을 위해 (약간의 효율성을 희생시키면서) 마지막을 dd
다른 것과 같은 방식으로 호출하고 tee의 표준 출력을 / dev / null로 보낼 수 있습니다.
cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) | /dev/null
설치 한 경우 파이프 표시기 를 사용 cat
하여 유용한 진행률 표시기를 얻을 수 있습니다 .
pv drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd
소스 이미지를 한 번만 읽으므로 소스 드라이브에 헤드 스 래싱이 발생하므로 다른 방법으로 이미지를 여러 번 복사하려고하면 지수가 느려질 수 있습니다. 사용하여 tee
위와 같이, 프로세스는 느린 대상 드라이브의 속도로 실행해야합니다.
대상 드라이브가 USB를 통해 연결된 경우, 모두 버스 대역폭을 공유 할 수 있으므로 USB 버스가 소스 또는 대상 드라이브가 아닌 병목 상태가되기 때문에 병렬로 여러 개를 쓰는 것이 순차적으로 쓰는 것보다 빠르지 않을 수 있습니다.
위의 내용은 Linux 또는 이와 유사한 것을 사용한다고 가정합니다 (장치 이름이 다를 수 있지만 OSX에서도 작동해야 함) .Windows 또는 다른 것을 사용하는 경우 다른 솔루션이 필요합니다.
사용하는 소프트웨어가 특정 형식의 브로드 캐스트 또는 멀티 캐스트 전송을 지원하지 않는 한 네트워크를 통한 이미징은 USB를 통해 많은 드라이브를 이미징하는 것과 유사한 문제가 있습니다. 전송 채널은 드라이브 대신 병목 현상이 발생합니다.
이 dd
방법을 사용하면 각 머신에서 다음과 같이 데이지 체인 netcat
+ tee
+ dd
프로세스를 수행 할 수 있습니다.
cat
/ pv
/ 는 목적지 머신 1까지 dd
데이터를 통과 nc
합니다.nc
소스 장치로부터 데이터를 수신하고 그것을 통해 배관 tee
되는 것은 턴에 송신되어 dd
(그래서 디스크)와 다른 nc
목적지 장치 (2)에 송신하는 방법.nc
목적지 머신 (1)으로부터의 데이터를 수신하고이를 통해 tee
이를 파이프 dd
(및 디스크로) 및 nc
목적지 머신 (3)으로 전송하는 다른 프로세스를 통해 파이핑한다 .nc
이전 머신에서 데이터를 가져 와서이를 통해 디스크로 보내는 마지막 머신까지 계속 됩니다 dd
.이렇게하면 스위치와 네트워크 카드가 모두 전이중 링크를 협상했다고 가정하고 전체 네트워크 대역폭을 사용하고있을 가능성이 있습니다. 소스 머신이 10 개의 데이터 사본을 전송하는 대신 (10 개의 대상 머신을 가정) 각각이 송신하는 송신 대역폭의 1/10로 제한됩니다. 다시. 당신의 버퍼 크기 설정을 조정할해야 할 수도 있습니다 pv
, nc
그리고 dd
가장 실용적인 성능을 가까이 할 수 있습니다.
멀티 캐스트 만 지원하는 일부 소프트웨어를 찾으면 훨씬 쉬울 것입니다. 그러나 위의 시도는 시도하기에 충분할만한 해키 솔루션입니다 ...
또 다른 생각. 드라이브 이미지가 잘 압축되면 (대부분의 청크가 0으로 가득 찬 경우) 한 번에 많은 대상으로 전송하더라도 소스 시스템의 발신 대역폭에는 문제가 없습니다. 먼저 이미지를 압축하고 tee
+를 사용하여 어디서나 전송 nc
하고 대상 (네트워크 nc
->-> 압축 풀기 dd
->-> 디스크)의 압축을 푸십시오 .
google에서 제안한 첫 번째 답변 (Linux 시스템) : dd if=/dev/sdb of=- | tee >(dd of=/dev/sdc) >(dd of=/dev/sdd) >(dd of=/dev/sde)
/ dev / sdb는 복제하려는 하드 드라이브이고 / dev / sdc, / dev / sdb 및 / dev / sde는 복제 할 드라이브입니다 ( 원하는만큼 복사하여 붙여 넣기 만하면됩니다. LiveCD가 그렇게해야하며 드라이브 문자에주의해야합니다!
of=-
합니까? 그냥 -
나를 위해 표준 출력으로 출력하는 대신 출력 파일을 만듭니다 . of
옵션을 생략하면 해결할 수 있습니다 .
내가 아는 것은 하드 드라이브 복제기라는 것이 있다는 것입니다. 이들은 동시에 여러 드라이브에 HD를 복제 (복제)하는 특수 장치입니다. 아마 이 기사는 당신을 도와줍니다.
아직 아무도 언급하지 않았으므로 Clonezilla 와 Server Edition에 대해 언급하겠습니다 . (불행히도 직접 링크가 보이지는 않지만 사이트의 왼쪽 탐색 메뉴에서 "Server Edition"을 찾을 수 있습니다 ...)
Clonezilla Live 에디션으로 큰 행운을 얻었지만 아직 Server Edition을 사용해 보지 않았습니다. 그래도 꽤 매끄러운 보인다.
Mac OS X을 사용하는 경우 내장되어 있습니다. 머신에서 멀티 캐스트 asr 세션을 시작하여 이미지를 제공 할 것입니다. 클라이언트 실행에서 부팅 디스크까지 터미널을 열고 asr 멀티 캐스트 스트림에 연결하십시오. 비어 있는.
나는 이것과 관련하여 웹에서 2 개의 유용한 링크를 발견했다. 한 사람은 고양이없이 dd를 사용하여 디스크 듀피를 수행했습니다.
dd if=/dev/sdb | tee >(dd of=/dev/sdc) | tee >(dd of=/dev/sdj) | dd of=/dev/sdh
http://joshhead.wordpress.com/2011/08/04/multiple-output-files-with-dd-utility
진행률 표시기를 표시하기 위해 다른 링크로 추가로 확장됩니다.
dd if=/dev/sdb | pv -s $(blockdev --getsize64 /dev/sdb) | tee >(dd of=/dev/sdc) | tee >(dd of=/dev/sdj) | dd of=/dev/sdh
http://www.commandlinefu.com/commands/view/6177/dd-with-progress-bar-and-statistics
나는 다윗의 대답을 넓히고 싶었다
pv drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd
는 drive.image
실제로 같은 다른 장치 일 수있다/dev/sde
둘째, dd
적절한 bs
설정으로 명령이 더 빠르게 작동 합니다. 내가 사용하는 bs=64k
10 분 1 시간에서 40 공연 파티션을 복사하는 6 배의 속도 증가를 보았다.
따라서 최종 명령은 다음과 같습니다.
pv drive.image | tee >(dd bs=64k of=/dev/sda) >(dd bs=64k of=/dev/sdb) >(dd bs=64k of=/dev/sdc) | dd bs=64k of=/dev/sdd
소스가 파일이 아닌 드라이브 인 경우 다음과 같습니다.
pv /dev/sde | tee >(dd bs=64k of=/dev/sda) >(dd bs=64k of=/dev/sdb) >(dd bs=64k of=/dev/sdc) | dd bs=64k of=/dev/sdd