dd 명령어 고급 옵션 사용법
기본 매개변수 외에도 dd 명령어는 복사 프로세스를 추가적으로 제어할 수 있는 몇 가지 고급 옵션을 제공합니다. 가장 유용한 몇 가지 옵션을 살펴보겠습니다.
status 옵션
status= 옵션은 dd가 진행 상황을 표시하는 방식을 제어합니다. 이는 대용량 파일을 복사할 때 특히 유용합니다.
- 다른 샘플 파일을 만들어 보겠습니다.
for i in {1..20}; do echo "Line $i: The dd command provides detailed status information." >> ~/project/status_example.txt; done
status=progress 옵션과 함께 dd를 사용합니다.
dd if=~/project/status_example.txt of=~/project/status_copy.txt bs=1k status=progress
status=progress 옵션을 사용하면 dd는 복사 작업 중에 실시간 진행 상황 정보를 표시합니다.
status 옵션은 여러 값을 지원합니다.
none: 정보를 표시하지 않음
noxfer: 전송 통계를 제외한 모든 정보 표시
progress: 주기적인 전송 통계 표시
skip 및 seek 옵션
skip= 및 seek= 옵션을 사용하면 각각 입력 및 출력 파일에서 블록을 건너뛸 수 있습니다. 이는 파일의 특정 섹션을 대상으로 할 때 유용합니다.
skip을 사용하여 테스트 파일의 중간부터 복사를 시작해 보겠습니다.
dd if=~/project/block_test.txt of=~/project/skipped_copy.txt bs=10 skip=10
skip=10 옵션은 dd에게 복사를 시작하기 전에 입력 파일의 처음 10 개 블록 (각 10 바이트 크기) 을 건너뛰도록 지시합니다.
- 결과를 확인합니다.
cat ~/project/skipped_copy.txt
파일의 시작 부분이 건너뛰어진 것을 확인할 수 있습니다.
- 이제
seek 옵션을 사용하여 출력 파일의 시작 부분에 공간을 남겨두겠습니다.
dd if=~/project/block_test.txt of=~/project/seek_example.txt bs=10 seek=5
seek=5 옵션은 dd에게 데이터를 쓰기 전에 출력 파일의 시작 부분에서 5 개의 블록을 건너뛰도록 지시합니다.
- 출력 파일을 검사합니다.
hexdump -C ~/project/seek_example.txt | head
이렇게 하면 파일이 실제 데이터가 시작되기 전에 50 바이트의 0(5 개의 10 바이트 블록) 으로 시작하는 것을 보여줍니다.
iflag 및 oflag 옵션
iflag= 및 oflag= 옵션은 입력 및 출력 파일의 특수 처리를 제어합니다.
dd if=~/project/block_test.txt of=~/project/direct_copy.txt bs=4k iflag=direct,fullblock
일반적인 플래그는 다음과 같습니다.
direct: 데이터에 직접 I/O 사용
dsync: 데이터에 동기화된 I/O 사용
sync: 데이터 및 메타데이터에 동기화된 I/O 사용
nonblock: 논블로킹 I/O 사용
fullblock: 전체 입력 블록 누적
이러한 고급 옵션은 dd를 백업 생성, 디스크 복제 및 데이터 복구를 포함한 다양한 시스템 작업에 유용한 도구로 만듭니다.