하드 드라이브에서 하드 드라이브로 전체 DD 복사

하드 드라이브에서 하드 드라이브로 전체 DD 복사

원래 질문:

만약 내가 가지고 있다면동일한 하드 드라이브 2개다음과 같은 특징이 있습니다.

  • SATA 6.0Gb/초
  • 5400rpm
  • 3TB

전체 dd 복사를 완료하는 데 시간이 얼마나 걸리나요?

지금까지 5시간째 계속 돌리고 있는데..

저는 Linux Ubuntu 12.04 64비트를 사용하고 있으며 사용하는 명령은 다음과 같습니다.

dd if=/dev/sdb of=/dev/sdc

업데이트: 1

지금 진행상황을 보니 430GB 복사하는데 6시간 넘게 걸렸네요. 하드 용량은 3TB..

더 빠른 방법은 없을까요?


업데이트: 2

전보다 훨씬 나아진 것 같아요(감사합니다.그록스타드~을 위한제안):

sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K

3TB의 ETA는 이전 430GB의 6시간에 비해 약 9시간이므로 이전 명령을 사용하면 약 36시간 정도가 될 것으로 추측됩니다.

답변1

dd과거에는 사람들이 테이프로 작업할 때(블록 크기가 중요할 때) 더 간단한 도구(예: cat바이너리 안전이 아닐 수도 있음)를 사용할 수 있었을 때 유용했습니다.

오늘날에는 dd if=/dev/sdb of=/dev/sdc복잡하고 오류가 발생하기 쉬운 문제입니다.느린글쓰기 방식 cat /dev/sdb >/dev/sdc. 하지만dd상대적으로 드문 작업에는 여전히 유용합니다., 그것은 당신이 믿게 만드는 튜토리얼의 수만큼 유용하지 않습니다. 거기에는 마법이 없습니다 dd. 마법이 그 안에 있습니다 /dev/sdb.

새 명령 sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K도 불필요하게 느리고 복잡합니다. 데이터는 한 번에 128kB씩 읽혀집니다. 이는 dd기본값인 512B보다 좋지만 더 큰 값만큼 좋지는 않습니다. 그런 다음 기록되기 전에 두 개의 파이프를 통과합니다.

더 간단하고 빠른 cat명령을 사용하세요. (일부에서는기준나는 몇 년 전에 Linux에서 이것을 만들었고 cat다른 디스크 간에 복사하는 것보다 빠르고 어떤 블록 크기보다 빠릅니다. 동일한 디스크에 복사할 때 블록 크기가 클수록 약간 더 빠릅니다. )cpcpdddd

cat /dev/sdb >/dev/sdc

에서 이 명령을 실행하려면 sudo루트로 리디렉션해야 합니다.

sudo sh -c 'cat /dev/sdb >/dev/sdc'

진행 보고서를 원하는 경우 Linux를 사용하고 있으므로 프로세스의 PID cat(예: 1234)를 확인하고 해당 입력(또는 출력) 파일 설명자의 위치를 ​​확인하여 쉽게 진행 보고서를 얻을 수 있습니다.

# cat /proc/1234/fdinfo/0
pos:    64155648 
flags:  0100000

진행 상황 보고를 원하지만 UNIX 변형이 파일 설명자 위치를 얻는 쉬운 방법을 제공하지 않는 경우 설치하여 사용할 수 있습니다.pv바꾸다 cat.

답변2

dd기본적으로 매우 작은 블록 크기(512바이트)가 사용됩니다. 이로 인해 상당한 오버헤드가 발생합니다(512바이트마다 시스템 호출 1회) read().write()

더 큰 블록 크기를 사용하면 훨씬 더 빠릅니다. 최적의 속도는 약 입니다 bs=64k. 대부분의 사람들은 더 큰 것을 사용하여 bs=1M사람이 읽을 수 있게 만듭니다( dd복사한다고 말하면 계산을 수행하지 않는다는 것을 1234 blocks알 수 있습니다 ). 1234 MiB더 큰 청크를 사용하면 속도가 향상되지 않으며 메모리 소비만 증가합니다.

따라서 명령은 다음과 같아야 합니다.

dd bs=1M if=/dev/sdb of=/dev/sdc

실행이 이미 느린 경우 실행을 중단하고 dd더 빠른 인스턴스로 dd다시 시작할 수 있습니다. 이러한 이유로 복사가 얼마나 진행되었는지 아는 것이 중요합니다. 일반적으로 취소할 때 진행 상황을 인쇄하거나 실행 중에 신호를 보내 진행 상황을 인쇄 dd할 수 있습니다 .USR1

kill -USR1 $(pidof dd)

예를 들어 복제가 을 초과하는 경우 다음 명령을 사용하여 위치를 복원 1234MiB할 수 있습니다 .1234MiB

dd bs=1M seek=1234 skip=1234 if=/dev/sdb of=/dev/sdc

그보다 적게 복사하면 1234MiB복사본이 불완전해집니다. 복사량이 초과되면 1234MiB이미 복사된 부분 중 일부를 다시 복사하므로 일반적으로 아무런 해를 끼치지 않습니다. 따라서 의심스러우면 복사했다고 생각하는 값보다 약간 작은 값을 선택해야 합니다.

답변3

진행 중인 dd 프로세스에 대한 통계를 가져옵니다.

kill적절한 신호와 함께 명령을 사용하여 dd통계를 표준 오류로 출력 할 수 있습니다 .
GNU dd 매뉴얼 페이지에서:

Sending a USR1 signal to a running 'dd' process makes it print I/O statistics to standard error and then resume copying.
      $ dd if=/dev/zero of=/dev/null& pid=$!
      $ kill -USR1 $pid
      18335302+0 records in 18335302+0 records out 9387674624 bytes (9.4 GB)  copied,  34.6279 seconds, 271 MB/s

dd 구현이 다를 수 있으므로 먼저 매뉴얼 페이지에서 올바른 신호를 확인하십시오.(BSD dd는 SIGINFO를 사용합니다).

프로세스 속도를 높이세요

  1. 각 HDD를 자체 SATA 포트에 연결하면 한 장치에서 데이터를 읽고 동시에 다른 장치에 쓸 수 있습니다.
  2. 매개변수를 사용하여 적절한 블록 크기를 사용하십시오 bs=. 구경하다슈퍼유저의 이 스레드그리고 스스로 몇 가지 가치를 시험해보세요.
  3. 읽기와 쓰기에 대해 별도의 호출을 사용 dd하고 파이프( dd if=/dev/sda bs=1M | dd of=/dev/sdb bs=1M)를 사용하여 연결합니다.
    이렇게 하고 블록 크기를 지정하는 경우 각 호출에서 동일한 블록 크기를 사용해야 합니다.
  4. 매개변수 와 같은 다른 최적화를 시도해 볼 수 있습니다 direct.
  5. 복사본이 손상될 수 있으므로 하드 드라이브가 마운트되어 있지 않은지 확인하십시오.

답변4

라는 상용 소프트웨어가 있습니다.HD 클론. 프리웨어 및 상용 소프트웨어로 라이센스가 부여됩니다. 두 버전 모두 부팅 가능한 펜 드라이브나 DVD는 물론 복사 디스크도 만들 수 있습니다. 소스 및 대상 하드 드라이브를 연결하고 GUI 기반 지침을 따르십시오.

무료 버전의 전송 속도는 약 80MB/초인 반면, 유료 버전은 훨씬 더 빠릅니다. NTFS 및 FAT 파일 시스템의 경우 유료 버전을 구성하여 하드 드라이브의 점유 비트만 복제할 수 있으므로 각 복제 속도가 크게 향상됩니다.

관련 정보