Linux

[Linux] 파일시스템 점검 및 관리 - dd

thdwldud 2025. 7. 28. 09:04

dd (Data Dumper)

  • 디스크를 이미지 형태로 백업하거나 파일의 포맷 즉, 형식을 바꾸는 명령으로 텍스트 파일의 대소문자변환과 부팅 디스크를 만들때도 쓰임
  • 스왑 파일을 만들거나 디바이스 초기화 시킬 때도 사용
dd if=입력파일 [conv=conversion type] of=출력파일 [bs=] [count=] [skip=]

 

옵션

옵션 설명
if= 입력 파일을 지정
장치명이나 이미지 파일도 지정할 수 있음
of= 출력 파일을 지정
장치명이나 이미지 파일도 지정
conv= 변환하는 데이터 유형을 지정
예) lcase, ucase
bs= 출력되는 블록 사이즈를 지정
한 번에 변환하는 블록 사이즈를 지정하는 항목
count= 변환되는 블록의 수를 지정
skip= 입력 파일의 시작되는 블록 번호를 지정
보통 데이터를 나누어 이미지를 만들 때 사용
oflag= 표준 출력에 사용되는 FLAG를 지정
대표적인 flag에는 direct가 있는데, output 파일에 buffer cache를 사용하지 않고, 다이렉트로 I/O를 함

 

사용 예

  • 현재 디렉터리에 있는 a.txt 파일의 모든 글자를 대문자(upper case)로 변환하여 b.txt 파일을 생성함 대소문자 변환시 if와 of의 파일명을 같게 해서는 안됨. 같을 경우 파일의 크기가 0인 빈 파일로 변환
dd if=a.txt conv=ucase of=b.txt
  • 현재 디렉터리에 있는 c.txt 파일의 모든 글자를 소문자(lower case)로 변환하여 d.txt 파일을 생성
dd if=c.txt conv=lcase of=d.txt
  • /dev/sda의 내용을 /dev/sdb로 디스크 백업하고 블록 사이즈는 1MB로 함
dd if=/dev/sda of=/dev/sdb bs=1M
  • /dev/sda5의 내용을 /dev/sdb1에 그대로 옮김. 파티션의 내용 및 LABEL도 그대로 옮겨짐. 복사하는 대상인 /dev/sdb1은 /dev/sda5보다 크거나 같아야 함. 만약 파티션이 큰 경우에는 /dev/sda5의 크기로 지정됨. 나머지 용량을 사용하려면 resize2fs를 사용해야 함
dd if=/dev/sda5 of=/dev/sdb1
  • 특정 디스크의 내용을 백업할 때 CD로 구울 수 있는 620MB의 크기로 나눈 것. 여기서 of에 기록되는 디스크는 /dev/sdb와 같은 다른 디스크 영역이어야 함
dd if=/dev/sda of=/media/disk1.img bs=1M count=620
dd if=/dev/sda of=/media/disk2.img bs=1M count=620 skip=621
dd if=/dev/sda of=/media/disk3.img bs=1M count=620 skip=1241
dd if=/dev/sda of=/media/disk4.img bs=1M count=620 skip=1861
  • 블록 사이즈는 1MB 단위로 10MB 용량의 file1 파일을 생성. 출력시에는 buffer cache를 사용하지 않고 직접 I/O를 사용함
dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct
💡 dd 명령을 사용하는 경우

- 텍스트 파일의 문자들을 대/소문자로 전환할 때 사용
- 부팅 디스크 또는 설치 디스크를 만들 때 사용 (RHEL 4 버전 이후에는 사용되지 않음)
- 디스크나 파티션 단위로 백업할 때 사용
- 스왑 파일 만들 때 사용
- 디스크를 초기화시킬 때 사용. RAID나 LVM 구성시 오류가 발생한 경우에 사용하면 유용함