리눅스 명령어 · 4 min read · Sep 19, 2025

리눅스 dd 명령어 초보자를 위한 설명 (8가지 예제)

dd 명령어는 리눅스 시스템에서 저수준 데이터 복사 및 변환에 사용되는 강력한 유틸리티입니다. “데이터 복제기”를 의미하며, 파일, 파티션 또는 전체 디스크의 정확한 복사본을 만드는 데 자주 사용되어 백업 생성, 드라이브 클로닝 또는 디스크 이미지를 물리적 매체에 쓰는 작업에 유용합니다. 이 명령어는 파일이나 장치 간에 데이터를 복사하고 변환할 수 있으며, 블록 크기 제어, 데이터 건너뛰기 또는 탐색, 압축 또는 바이트 스와핑과 같은 필터 적용 옵션을 제공합니다. 이렇게 기본적인 수준에서 작업할 수 있기 때문에 dd는 주의해서 사용해야 하며, 잘못 사용하면 데이터 손실이나 손상이 발생할 수 있습니다.

이 튜토리얼에서는 이해하기 쉬운 몇 가지 예제를 사용하여 도구가 어떻게 작동하는지 논의할 것입니다. 그러나 그 전에 여기에서 언급된 모든 예제는 Ubuntu 24.04에서 테스트되었다는 점을 언급할 가치가 있습니다.

리눅스 dd 명령어

간단히 말해, dd 명령어는 파일을 복사하고 변환할 수 있게 해줍니다. 이 도구는 원하는 형식을 지정하기 위해 사용할 수 있는 몇 가지 피연산자를 제공합니다. 다음은 매뉴얼 페이지에 설명된 명령어의 일반적인 구문입니다:

dd [OPERAND]...
dd OPTION

dd 명령어를 사용하여 ISO 파일에서 부팅 가능한 USB 드라이브 만들기

리눅스에서 dd 명령어의 일반적인 용도는 ISO 파일에서 부팅 가능한 USB 드라이브를 만드는 것입니다. 이는 운영 체제를 설치하기 위해 USB 스틱을 준비할 때 자주 수행됩니다. 명령어는 다음과 같이 보일 것입니다:

sudo dd if=/path/to/your.iso of=/dev/sdX bs=4M status=progress && sync

이 예제에서:

  • if=/path/to/your.iso는 입력 파일을 지정하며, 이는 ISO 이미지입니다.
  • of=/dev/sdX는 출력 파일을 지정하며, 이는 USB 드라이브입니다 (X를 USB 장치에 적합한 문자로 교체하십시오).
  • bs=4M는 블록 크기를 4메가바이트로 설정하여 복사 프로세스를 최적화합니다.
  • status=progress는 복사의 진행 상황에 대한 실시간 업데이트를 제공합니다.
  • sync는 프로세스가 완료되기 전에 모든 데이터가 USB에 기록되도록 보장합니다.

이 명령어는 ISO 파일에 포함된 운영 체제를 설치하는 데 사용할 수 있는 부팅 가능한 USB 드라이브를 생성합니다.

자주 묻는 질문

다음 Q&A 유형의 예제는 dd 명령어가 어떻게 작동하는지에 대한 좋은 아이디어를 제공할 것입니다.

Q1. dd 명령어를 사용하여 입력 텍스트의 대소문자를 변경하는 방법은?

소문자로 작성된 텍스트가 몇 줄 있다고 가정하고, 이를 빠르게 대문자로 변환해야 합니다. conv 명령줄 옵션을 사용할 수 있습니다 (값으로 ucase를 사용합니다).

예를 들어:

위의 스크린샷은 명령어와 입력 텍스트를 보여줍니다. Ctrl+d 키 조합을 사용하여 dd에게 입력이 완료되었음을 알렸고, 그 직후 명령어는 다음과 같은 출력을 생성했습니다:

따라서 입력 텍스트가 소문자에서 대문자로 변환된 것을 볼 수 있습니다. 마지막 세 줄은 단지 몇 가지 작업 관련 통계입니다.

참고: 유사하게, 대문자 텍스트를 소문자로 변환하려면 lcase 값을 사용할 수 있습니다.

Q2. 대신 파일에서 읽고 쓰는 방법은?

위의 첫 번째 예제에서 stdin(표준 입력)을 통해 텍스트를 입력했습니다. 그러나 항상 입력 및 출력 파일을 사용할 수 있습니다. 입력 및 출력 파일의 이름을 지정하려면 ifof 명령줄 옵션을 사용하십시오.

예를 들어, file1의 텍스트 대소문자를 변환한 다음 file2에 작성하려면 다음과 같이 할 수 있습니다:

dd if=file1 of=file2 conv=ucase

Q3. 입력을 읽을 때 텍스트를 건너뛰는 방법은?

원하는 경우 dd에게 입력 텍스트를 읽을 때 일부 초기 바이트를 건너뛰도록 요청할 수 있습니다. 이는 skip 옵션을 사용하여 수행할 수 있으며, 숫자 값을 요구합니다. 예를 들어, 이 값이 ‘N’이라면 dd는 입력의 시작에서 N ibs 크기의 블록을 건너뜁니다. 여기서 ‘ibs’는 도구가 한 번에 읽는 바이트 수를 지정하는 또 다른 명령줄 dd 옵션입니다 (기본값은 512입니다).

따라서 입력 파일의 처음 4바이트를 건너뛰고 싶다면 it을 4로 설정한 다음 건너뛸 값으로 1을 사용해야 합니다. 이렇게 하면 도구가 입력 파일을 읽을 때 4바이트 블록 1개를 건너뜁니다.

따라서 텍스트 hey,가 file1을 읽는 동안 건너뛰었음을 볼 수 있습니다 - 그래서 file2에는 나타나지 않았습니다.

Q4. 출력에서 입력 바이트 쌍을 서로 바꾸는 방법은?

요구 사항이 있는 경우 dd를 사용하여 입력 바이트의 각 쌍을 서로 바꿀 수도 있습니다. 이는 swabconv 명령줄 옵션의 값으로 사용하여 달성할 수 있습니다. 다음 스크린샷이 상황을 더 명확하게 해줄 것입니다:

Q5. 출력 파일이 이미 존재하지 않을 때만 dd가 작동하도록 하는 방법은?

출력 파일이 이미 존재할 때 dd 명령어가 아무 작업도 하지 않도록 요구하는 경우, conv 옵션의 excl 값을 사용하여 이 조건을 강제할 수 있습니다.

다음 스크린샷은 사용 사례를 보여줍니다:

Q6. 출력 파일이 추가 모드로 업데이트되도록 하는 방법은?

기본적으로 dd는 출력 파일을 덮어씁니다 (존재하는 경우). 그러나 대신 텍스트를 추가하고 싶다면 oflag FLAG에 대해 append 값을 사용하고 conv 옵션에 대해 notrunc를 사용하십시오.

예를 들어:

dd if=file1 of=file3 oflag=append conv=notrunc

위의 명령어가 작동하는 모습:

출력 파일이 추가 모드로 업데이트되는지 확인하는 방법

Q7. dd가 출력 파일을 생성하지 않도록 하는 방법은?

원하는 경우, 명령어에 제공된 파일이 이미 존재하지 않는 경우 dd 명령어가 출력 파일을 생성하지 않도록 강제할 수도 있습니다. 이는 nocreat 값을 conv 명령줄 옵션으로 사용하여 수행할 수 있습니다.

예를 들어:

Q8. stderr에 인쇄되는 정보 수준을 제어하는 방법은?

원하는 경우, 명령어가 stderr에 인쇄하는 정보의 양을 제한할 수도 있습니다. 이는 status 명령줄 옵션을 사용하여 수행할 수 있습니다. 예를 들어, 오류 메시지를 제외한 모든 것을 억제하려면 이 명령줄 옵션에 none 값을 전달할 수 있습니다:

dd if=file1 of=file3 status=none

사용 가능한 다른 값은 noxferprogress입니다. 다음은 매뉴얼 페이지에서 status 옵션에 대해 설명하는 내용입니다:

status=LEVEL
              LEVEL의 정보를 stderr에 인쇄합니다; 'none'은 오류 메시지를 제외한 모든 것을 억제하고, 'noxfer'는 최종 전송 통계를 억제하며, 'progress'는 주기적인 전송 통계를 표시합니다.

결론

이 튜토리얼에서 논의된 예제는 dd 명령어가 할 수 있는 모든 것을 탐색하는 데 있어 표면을 긁는 것에 불과합니다. 이 도구를 사용하여 가상 파일 시스템 및 하드 드라이브 또는 시스템 파티션의 백업을 생성할 수 있다는 점을 알려드리기 위해서입니다. dd에 대한 더 많은 정보는 매뉴얼 페이지를 참조하십시오.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.