dd 명령 사용

dd (데이터 세트 정의) 명령은 간단하고 유용하며 놀랍도록 사용하기 쉬운 도구입니다. 이 도구를 사용하면 Norton Ghost와 같은 상용 프로그램, Windows의 경우 또는 Linux의 CloneZilla와 같은 무료 프로그램 에서처럼 짧은 명령 줄을 사용하여 장치에서 디스크와 파티션에서 동일한 작업을 수행 할 수 있습니다.

기본 구문 :

dd 명령을 사용하는 가장 기본적인 구문은 다음과 같습니다.

sudo dd if=origen of=destino

어디에 의미하는 경우 "입력 파일 = 입력 파일", 즉, 무엇을 복사하고 싶은지 의미 "출력 파일 = 출력 파일“, 즉, 데이터가 복사 될 대상 파일입니다.기원과 대상은 장치 (CD 또는 DVD 리더, 하드 디스크, 플로피 디스크, pendrive, 파티션 등), 백업 파일 또는 디스크 이미지 등이 될 수 있지만 폴더 나 하위 폴더는 아닙니다.

이 명령을 원활하게 사용하려면 먼저 Linux에서 어떤 파티션 / 하드 드라이브가 호출되는지 명확히해야합니다 (예 : / dev / sda1; / dev는 영어로 device = device에서 파생 됨). 소스 및 대상 디스크 / 파티션을 알기 위해 gparted와 같은 그래픽 파티션 프로그램을 사용하여 sudo fdisk -lo 명령을 사용하여 쉽게 찾을 수 있습니다. dd 명령에 대한 모든 정보는 man dd 및 info dd 명령으로 참조 할 수 있습니다.

이 명령은주의해서 사용해야하며 디스크 / 파티션의 순서와 이름을 항상 확인해야합니다. 디스크가 복제되는 것처럼 순식간에 지워지기 때문입니다.

pv 명령을 사용한 구문 : 이전 구문에서 dd 명령을 사용하면 매우 예약 된 명령이기 때문에 작은 단점이 있습니다.-정보를 제공하지 않습니다. 실행될 때 터미널 프롬프트가 고정되어 있으므로 알 수 없습니다. 무슨 일이 일어나고 있으며 실행을 완료하는 데 남은 시간입니다. 이 작은 불편 함은 통과하는 데이터를 측정하는 터미널 파이프 역할을하는 pv, (*) 명령을 dd 명령의 구문에 추가하여 해결할 수 있으므로 이제 구문은 다음과 같습니다.

dd if=origen |pv|dd of=destino

결과적으로 터미널에서 일종의 진행률 표시 줄, 전송 된 바이트에 대한 정보, 실행 시간 및 전송 속도를 모두 실시간으로 얻을 수 있습니다.

(alf)-(~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 1,630GB 0:21:30 [1,12MB / s] [

또한 완료되면 전송 속도, 전송 된 총 바이트 및 모든 데이터를 전송하는 데 걸린 총 시간에 대한 통계를 보여줍니다.

(alf)-(~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 10530816 + 0 개 레코드 읽기 <=> 10530816 + 0 개 레코드 쓰기 5391777792 바이트 (5.4GB) 복사, 3873,48 s, 1,4MB / s 5,02GB 1:04:33 [1,33MB / s] [<=> 10530816 + 읽기 0 개 레코드 <=> 10530816 + 쓰기 0 개 레코드 5391777792 바이트 (5.4GB) 복사, 3873,48, 1,4 초, XNUMXMB / 초 (alf)-(~) └──┤

(*)이 두 번째 구문으로 명령 줄을 실행하기 전에 시스템에 pv 패키지가 설치되어 있는지 확인하거나없는 경우 설치하십시오. 둘 다 Synaptic으로 설치하십시오.

이 명령의 몇 가지 실용적인 예와 옵션을 살펴 보겠습니다 (이전에 pv 명령으로 설명 된 트릭이있는 버전에서).

A) 하드 드라이브 및 파티션 정보 :

= 하드 드라이브 복제 :

이를 통해 hdb에서 hda 디스크를 복제합니다. (IDE 디스크) :

sudo dd if=/dev/hda |pv|dd of=/dev/hdb bs=1M

이를 통해 sdb에서 sda 디스크를 복제합니다. (SATA 디스크) :

sudo dd if=/dev/sda |pv|dd of=/dev/sdb bs=1M

bs = 1M 옵션을 사용하면 읽기와 쓰기가 모두 1 메가 바이트 블록으로 수행됩니다.

이러한 방식으로 디스크는 "있는 그대로", MBR, 파티션 테이블, 빈 공간 등으로 기록되므로 크기가 같거나 더 큰 디스크에만 기록 할 수 있습니다.

= 원본 디스크의 첫 번째 파티션 (hda1) 만 대상 디스크 (hdb)에 씁니다.

sudo dd if=/dev/hda1 |pv|dd of=/dev/hdb bs=1M

= 전체 디스크 (hda)를 대상 디스크의 첫 번째 파티션 (hdb1)에 굽습니다.

sudo dd if=/dev/hda |pv|dd of=/dev/hdb1 bs=1M

= 이미지 생성-bin 또는 iso 일 수 있음-하드 디스크 (hda)의 / 홈 디렉토리 :

sudo dd if=/dev/hda |pv|dd of=/home/hda.bin

= 디스크의 정보를 완전히 지우려면 디스크를 임의의 문자로 XNUMX 번 채 웁니다. 디스크에는 정보 추적이 없습니다.

for n in {1..5}; do dd if=/dev/urandom |pv|dd of=/dev/hda bs=8b conv=notrunc;

= 모든 장치에서 파티션과 전체 디스크 지우기 :

sudo dd if=/dev/zero |pv|dd of=/dev/sdx (전체 디스크 지우기)

sudo dd if=/dev/zero |pv|dd of=/dev/sdxa (디스크 파티션 삭제)

여기서 : x는 지울 디스크, a는 지울 파티션입니다.

이 작업은 파티션을 완전히 지우는 데 매우 유용하며 지워질 데이터는 복구 할 수 없으므로 낮은 수준의 매우 안전한 지우기입니다. 예를 들어 pendrive가 바이러스에 감염된 경우 매우 유용합니다. 친애하는 창문.

B) CD / DVD에서

= CD (또는 DVD)에서 .iso 이미지 생성 / 마운트

/ home 디렉토리에 CD의 .iso 이미지를 만들려면 :

sudo dd if=/dev/cdrom |pv|dd of=/home/imagendeCD.iso

CD에서 .iso 이미지를 마운트하려면 :

sudo mount -o loop imagedeCD.iso /mnt/home

= 긁힌 DVD를 복구합니다 (이렇게하면 전체 DVD가 복구되지 않으며이 경우 읽을 수있는 섹터 만 복구됩니다). 결함이있는 하드 드라이브에도 적합합니다.

sudo dd if=/dev/cdrom |pv|dd of=/home/dvd_recuperado.iso conv=noerror,sync

noerror 옵션은 어떤 상황에서도 오류를 읽는 것을 방지합니다.

C) MBR 및 VBS 정보 :

= MBR (마스터 부트 레코드) 복사 / 복원 :

MBR을 복사하려면 :

sudo dd if=/dev/hda |pv|dd of=mbr count=1 bs=512

MBR을 복원하려면 :

sudo dd if=mbr |pv|dd of=/dev/hda

= MBR 및 파티션 테이블 정리 :

sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=512 count=1

= MBR을 지우지 만 파티션 테이블을 건드리지 않습니다 (파티션의 데이터를 잃지 않고 GRUB을 지우는 데 매우 유용함) :

sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=446 count=1

= VBS (볼륨 부팅 섹터) 복사 / 복원 :

VBS를 복사하려면 :

sudo dd if=/dev/hda |pv|dd of=/home/sector_arranque_hda count=1 bs=512

VBS를 복원하려면 :

sudo dd if=/home/sector_arranque_hda |pv|dd of=/dev/hda

D) 기타 :

= 디스크 오류를 건너 뛰고 / 홈 디렉토리에 디스크 이미지를 굽습니다 (죽어가는 디스크에 매우 유용함) :

sudo dd conv=noerror if=/dev/hda |pv|dd of=~/home/imagen_disco_con_errores.iso

= 비어있는 1Mb 파일 만들기 :

sudo dd if=/dev/zero |pv|dd of=archivo_nuevo_vacio bs=1024 count=1024

= 2Gb 스왑 파일 생성 :

sudo dd if=/dev/zero |pv|dd of=/swapspace bs=4k count=2048M
mkswap /swapspace
swapon /swapspace

= 모든 문자를 대문자로 변환 :

sudo dd if=miarchivo |pv|dd of=miarchivo conv=ucase

그래픽 환경 프로그램과 함께 dd 명령을 사용하십시오. Gdiskdump는 다음 작업을 용이하게하는이 dd 명령을위한 그래픽 환경입니다. 복제 파티션 또는 디스크, 빠르고 쉽게. 페이지에서 다운로드 할 수 있습니다. https://launchpad.net/gdiskdump/ 루트 권한 (sudo gdiskdump)을 사용하여 파일을 열면 복제 할 파티션이나 디스크 (입력 형식)와 대상 (출력 형식) 만 지정하면되므로 프로그램을 사용하기가 매우 쉽습니다.