WIPIVERSE

dd (유닉스)

dd는 유닉스 및 유닉스 계열 운영체제에서 제공되는 명령어 도구로, 파일 또는 블록 장치의 복사와 변환을 수행한다. 기본적으로 지정된 입력 파일(보통 if= 옵션)에서 데이터를 읽어 지정된 출력 파일(of= 옵션)으로 전송하며, 블록 크기(bs=), 카운트(count=), 스킵(skip=), 파일 포인터 이동(seek=) 등 다양한 옵션을 통해 세밀한 제어가 가능하다.

주요 기능

기능 설명
복사 디스크나 파티션 등 블록 장치 간에 원시 바이너리 데이터를 복사한다.
이미지 생성 디스크 전체를 파일로 백업하거나, 파일을 디스크에 복원하는 데 사용된다.
포맷 변환 입력 데이터를 특정 블록 크기로 변환하거나, conv= 옵션을 통해 문자 인코딩, 대소문자 변환 등을 수행한다.
패딩/트리밍 conv=sync 옵션으로 부족한 블록을 0으로 채우거나, conv=notrunc 옵션으로 기존 파일을 덮어쓰지 않고 이어 쓴다.

대표적인 옵션

  • if=FILE : 입력 파일 지정 (기본값은 표준 입력)
  • of=FILE : 출력 파일 지정 (기본값은 표준 출력)
  • bs=SIZE : 블록 크기 지정 (예: bs=4M)
  • count=N : 복사할 블록 수 지정
  • skip=N : 입력 파일의 앞쪽 N 블록을 건너뛰기
  • seek=N : 출력 파일의 앞쪽 N 블록을 건너뛰고 그 지점부터 기록
  • conv=... : 변환 옵션 (noerror, sync, fsync, notrunc 등)

사용 예시

# 디스크 전체를 이미지 파일로 백업
dd if=/dev/sda of=/path/to/backup.img bs=1M status=progress

# 이미지 파일을 디스크에 복원
dd if=/path/to/backup.img of=/dev/sda bs=1M conv=notrunc

# 특정 블록만 복사
dd if=/dev/sda of=part.img bs=512 count=2048 skip=1024

어원 및 역사

dd 명령어는 초기 유닉스 시스템에서 IBM 메인프레임의 JCL(잡 제어 언어)에서 사용되는 DD(Data Definition) 구문에 기인한 것으로 추정된다. 초기 유닉스 매뉴얼에서는 "data copier" 혹은 "dataset definition"이라는 의미를 내포하고 있던 것으로 기록되었다. 정확한 어원에 관한 공식 문서는 제한적이지만, 위와 같은 해석이 일반적으로 받아들여진다.

관련 문서

  • POSIX.1-2008 표준(문서: pax 및 dd 명령어 정의)
  • man dd (각 운영체제별 매뉴얼 페이지)
  • GNU Coreutils 패키지에 포함된 dd 구현 소스 코드

※ 본 내용은 공개된 기술 문서와 표준 규격을 기반으로 작성되었으며, 추가적인 최신 변동 사항은 해당 운영체제의 공식 매뉴얼을 참고한다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기