사용 버전 : Linux 우분투(레드햇 계열) 24.04.01 LTS 버전
사용한 시스템 지역/언어 : 대한민국/한글
man dd 원문
DD(1) User Commands DD(1)
NAME
dd - convert and copy a file
SYNOPSIS
dd [OPERAND]...
dd OPTION
DESCRIPTION
Copy a file, converting and formatting according to the operands.
bs=BYTES
read and write up to BYTES bytes at a time (default: 512); over‐
rides ibs and obs
cbs=BYTES
convert BYTES bytes at a time
conv=CONVS
convert the file as per the comma separated symbol list
count=N
copy only N input blocks
ibs=BYTES
read up to BYTES bytes at a time (default: 512)
if=FILE
read from FILE instead of stdin
iflag=FLAGS
read as per the comma separated symbol list
obs=BYTES
write BYTES bytes at a time (default: 512)
of=FILE
write to FILE instead of stdout
oflag=FLAGS
write as per the comma separated symbol list
seek=N (or oseek=N) skip N obs-sized output blocks
skip=N (or iseek=N) skip N ibs-sized input blocks
status=LEVEL
The LEVEL of information to print to stderr; 'none' suppresses
everything but error messages, 'noxfer' suppresses the final
transfer statistics, 'progress' shows periodic transfer statis‐
tics
N and BYTES may be followed by the following multiplicative suffixes:
c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, xM=M,
GB=1000*1000*1000, G=1024*1024*1024, and so on for T, P, E, Z, Y, R, Q.
Binary prefixes can be used, too: KiB=K, MiB=M, and so on. If N ends
in 'B', it counts bytes not blocks.
Each CONV symbol may be:
ascii from EBCDIC to ASCII
ebcdic from ASCII to EBCDIC
ibm from ASCII to alternate EBCDIC
block pad newline-terminated records with spaces to cbs-size
unblock
replace trailing spaces in cbs-size records with newline
lcase change upper case to lower case
ucase change lower case to upper case
sparse try to seek rather than write all-NUL output blocks
swab swap every pair of input bytes
sync pad every input block with NULs to ibs-size; when used with
block or unblock, pad with spaces rather than NULs
excl fail if the output file already exists
nocreat
do not create the output file
notrunc
do not truncate the output file
noerror
continue after read errors
fdatasync
physically write output file data before finishing
fsync likewise, but also write metadata
Each FLAG symbol may be:
append append mode (makes sense only for output; conv=notrunc sug‐
gested)
direct use direct I/O for data
directory
fail unless a directory
dsync use synchronized I/O for data
sync likewise, but also for metadata
fullblock
accumulate full blocks of input (iflag only)
nonblock
use non-blocking I/O
noatime
do not update access time
nocache
Request to drop cache. See also oflag=sync
noctty do not assign controlling terminal from file
nofollow
do not follow symlinks
Sending a USR1 signal to a running 'dd' process makes it print I/O sta‐
tistics to standard error and then resume copying.
Options are:
--help display this help and exit
--version
output version information and exit
AUTHOR
Written by Paul Rubin, David MacKenzie, and Stuart Kemp.
REPORTING BUGS
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
COPYRIGHT
Copyright © 2023 Free Software Foundation, Inc. License GPLv3+: GNU
GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
SEE ALSO
Full documentation <https://www.gnu.org/software/coreutils/dd>
or available locally via: info '(coreutils) dd invocation'
GNU coreutils 9.4 April 2024 DD(1)
man dd 번역기 번역본
DD (1) 사용자 명령 DD (1)
이름
DD- 파일을 변환하고 복사하십시오
개요
DD [피연산자] ...
DD 옵션
설명
피연산자에 따라 파일, 변환 및 서식을 복사하십시오.
BS = 바이트
한 번에 바이트 바이트를 읽고 쓰십시오 (기본값 : 512). 위에-
IBS와 OBS
CBS = 바이트
한 번에 바이트 바이트를 변환합니다
conv = convs
쉼표로 분리 된 기호 목록에 따라 파일 변환
count = n
N 입력 블록 만 복사하십시오
IBS = 바이트
한 번에 바이트 바이트를 읽으십시오 (기본값 : 512)
if = 파일
stdin 대신 파일에서 읽으십시오
iflag = 플래그
쉼표로 분리 된 기호 목록에 따라 읽습니다
OBS = 바이트
한 번에 바이트 바이트 작성 (기본값 : 512)
of = 파일
stdout 대신 파일에 쓰십시오
oflag = 플래그
쉼표로 분리 된 기호 목록에 따라 쓰십시오
seet = n (또는 oseek = n) skip n obs 크기의 출력 블록을 건너 뜁니다
skip = n (또는 iseek = n) skip n ibs 크기의 입력 블록
상태 = 레벨
Stderr에 인쇄 할 정보 수준; '없음'은 억제합니다
오류 메시지를 제외한 모든 것이 'Noxfer'는 최종을 억제합니다
전송 통계, '진행 상황'은 주기적 전송 통계를 보여줍니다.
틱
N 및 바이트에 이어 다음 곱셈 접미사가 이어질 수 있습니다.
C = 1, w = 2, b = 512, kb = 1000, k = 1024, mb = 1000*1000, m = 1024*1024, xm = m,
GB = 1000*1000*1000, G = 1024*1024*1024 등 T, P, E, Z, Y, R, Q.
이진 접두사도 사용할 수 있습니다 : kib = k, mib = m 등. n이 끝나면
'B'에서는 블록이 아닌 바이트를 계산합니다.
각 확실한 기호는 다음과 같습니다.
EBCDIC에서 ASCII까지 ASCII
ASCII에서 EBCDIC까지의 EBCDIC
ASCII에서 대체 EBCDIC까지의 IBM
CBS 크기의 공간이있는 블록 패드 Newline-Terminated Records
차단 해제
CBS 사이즈 레코드의 후행 공간을 Newline으로 교체하십시오
lcase 변경 대문자가 소문자로 변경됩니다
UCAES는 소문자를 대문자로 변경합니다
Sparse는 All-Nul 출력 블록을 쓰기보다는 추구하려고합니다.
면봉은 모든 입력 바이트 쌍을 교환합니다
IBS 크기에 흠이있는 모든 입력 블록을 동기화하십시오. 함께 사용될 때
차단 또는 차단을 풀고 숫자가 아닌 공백으로 패드
출력 파일이 이미 존재하면 제외 실패
nocreat
출력 파일을 작성하지 마십시오
notrunc
출력 파일을 자르지 마십시오
노 에러
읽기 오류 후에도 계속하십시오
fdatasync
마무리하기 전에 출력 파일 데이터를 물리적으로 쓰십시오
fsync 마찬가지로 메타 데이터도 작성합니다
각 플래그 기호는 다음과 같습니다.
Append Append 모드 (출력에 대해서만 의미가 있습니다; conc = notrunc sug-
gested)
데이터에 직접 I/O를 직접 사용하십시오
예배 규칙서
디렉토리가 아니라면 실패합니다
DSYNC 데이터에 동기화 된 I/O를 사용합니다
메타 데이터와 마찬가지로 동기화됩니다
풀 블록
입력의 전체 블록 축적 (iflag 만 해당)
비 블록
비 블로킹 I/O를 사용하십시오
노아 타임
액세스 시간을 업데이트하지 마십시오
Nocache
캐시 드롭 요청. OFLAG = SYNC도 참조하십시오
Noctty는 파일에서 통제 터미널을 할당하지 않습니다
nofollow
Symlinks를 따르지 마십시오
실행중인 'DD'프로세스에 USR1 신호를 보내면 I/O Sta-
표준 오류에 대한 틱스틱과 복사를 재개하십시오.
옵션은 다음과 같습니다.
-헬프이 도움말과 종료를 표시합니다
--버전
출력 버전 정보 및 종료
작가
Paul Rubin, David Mackenzie 및 Stuart Kemp가 작성했습니다.
보고 버그
GNU Coreutils 온라인 도움말 : <https://www.gnu.org/software/coreutils/>
번역 버그를 <https://translationproject.org/team/>에보고하십시오
저작권
저작권 © 2023 Free Software Foundation, Inc. 라이센스 GPLV3+: GNU
GPL 버전 3 이상 <https://gnu.org/licenses/gpl.html>.
이것은 무료 소프트웨어입니다. 자유롭게 변경하고 재분배 할 수 있습니다.
법률에 의해 허용되는 범위 내에서 보증은 없습니다.
참조하십시오
전체 문서 <https://www.gnu.org/software/coreutils/dd>
또는 Info '(Coreutils) DD 호출을 통해 로컬로 사용 가능
GNU Coreuutils 2024 년 4 월 9.4 DD (1)
형태 : [입력] | dd | [출력]
기능 : [입력]에 해당하는 값을 변환하여 [출력]으로 전달한다.
[옵션]
-bs=바이트: 한 번에 지정한 바이트 수만큼 읽고 기록 (기본값: 512); ibs와 obs를 무시.
-count=N: N개의 입력 블록만 복사. bs로 지정한 크기가 1개 블록
-if=파일: 표준 입력 대신 파일에서 읽습니다.
-of=파일: 표준 출력 대신 파일에 씁니다.
-conv=변환: 쉼표로 구분된 기호 목록에 따라 파일을 변환.
-iflag=플래그: 쉼표로 구분된 기호 목록에 따라 읽습니다.
-oflag=플래그: 쉼표로 구분된 기호 목록에 따라 씁니다.
conv 변환 매개변수
block : 개행문자(enter, \n 등)로 끝나는 레코드를 cbs 크기의 공백으로 채움
unblock : cbs크기의 후행 공백을 개행문자로 대체
lcase : 대문자를 소문자로 변경
ucase : 소문자를 대문자로 변경
swap : 입력 데이터의 바이트 순서를 교환
※입력 데이터의 저장방식
- 빅 엔디언 : 가장 중요한 바이트가 먼저 저장됨
- 리틀 엔디언 : 가장 덜 중요한 바이트가 먼저 저장됨
예) 0x12345678을 저장할 경우
빅 엔디언 : 12 34 56 78 순서로 저장
리틀 엔디언 : 78 56 34 12 순서로 저장
flag 매개변수
iflag 주요 플래그
fullblock : 입력 블록을 완전히 채울 때 까지 읽음.
nonblock : 비차단모드로 읽음
direct : 직접 I/O 모드를 사용하여 데이터를 읽음.
sync : 동기화된 I/O 모드를 사용하여 데이터를 읽음.
noatime : 파일의 접근 시간을 업데이트 하지 않음.
oflag 주요 플래그
append : 파일의 끝에 데이터를 추가함.
direct : 직접 I/O 모드를 사용하여 데이터를 기록.
dsync : 데이터가 디스크에 기록될 때까지 쓰기작업 동기화
sync : 데이터와 메타데이터가 디스크에 기록될 때까지 쓰기작업 동기화
nocache : 캐시를 사용하지 않고 데이터를 기록.
noatime : 파일의 접근 시간을 업데이터하지 않음.
dd의 활용
파이프라인 사용예시
1. 입력데이터를 변환하여 출력
$echo "HELLO WORLD" | dd conv=lcase | tee ouput.txt
HELLO WORLD 를 소문자로 변환후 해당 결과를 output.txt 파일로 저장하고 화면에 출력함
2. 입력데이터의 변환
$echo "HELLO WORLD" | dd conv=lcase
HELLO WORLD 를 소문자로 변환후 해당 결과를 출력함.
3. 데이터의 압축
$cat file.txt | dd bs=1024 count=10 | gzip > file.txt.gz
file.txt에서 1024byte를 읽어 온 뒤(10개의 문자씩 읽음) gzip으로 압축하여 file.txt.gz로 저장
4.데이터 패턴 생성
$dd if=/dev/zero bs=1M count=1 | hexdump -C
1MB의 0으로 채워진 데이터를 생성하여 헥사 덤프로 출력
파일 활용 예시
1. 디스크 복제
$dd if=/dev/sda1 of=/dev/sda2
sda1 파티션의 내용을 sda2파티션으로 복사
2. 디스크 이미지 생성 및 복원
$dd if=/dev/sda of=/path/to/image.img
/dev/sda 디렉토리의 내용을 image.img로 저장
3. 부트로더 복사
$dd if=/dev/sda of=/path/to/mbr/backup.img bs=512 count=1
/dev/sda 파일에서 512byte크기의 1블록을 읽어서 backup.img 파일로 저장
4. 데이터 변환 및 처리
$dd if=/dev/zero of=/path/to/file.txt bs=1M count=100
0으로 구성된 파일(zero)에서 1Mb 단위로 100개의 블록을 읽어와 file.txt로 저장
5.디스크 성능 테스트
$dd if=/dev/zero of=/temp/testfile bs=1G count=1 oflag=direct
0으로 채워진 1Gb 용량의 데이터를 testfile에 쓰고 쓰기 속도를 측정
※/dev/zero 파일 대신 /dev/urandom 파일을 사용하여 무작위 데이터 사용 가능
$dd if=/tem/testfile of=/dev/null bs=1G count=1 iflag=direct
testfile을 /dev/null로 보내면서 파일의 읽기 속도를 측정
각 활용 예시의 필요성
1. 디스크 복제
- 백업 및 복구에 활용
- 시스템 마이그레이션 : 새로운 하드 드라이브로 시스템을 이전할 때 그대로 복사하여 손쉽게 사용
- 동일한 환경 구축 : 여러대의 컴퓨터에 동일한 시스템 환경을 구축하고 싶을 때 사용
2. 디스크 이미지 생성 및 복원
- 디스크의 상태를 이미지 파일로 저장하여 백업
- 가상머신 활용 : 디스크 이미지를 가상머신에 사용하여 테스트 환경 구축
- 디스크 이미지를 통해 다른 시스템으로 쉽게 전송
3. 부트로더 복사
- 부트로더 백업 및 복구 : 부팅 문제 발생시 복구를 위해사용
- 멀티부트 설정 : 여러 운영체제를 설치할 때 부트로더를 복사하여 멀티 부트 환경을 설정 가능
4.데이터 변환
- 주로 보안 계통에서 사용하며 데이터를 0이나 랜덤 데이터로 채우기 위해 사용
5. 읽기/쓰기 속도 측정
- 자신의 프로그램 처리속도가 느리다고 생각 될 때 점검용도로 사용 가능
dd 명령어는 cp 명령과 다르게 저수준에서 조작하는 복사이므로 좀 더 넓은 범위의 활동을 할 수 있다.
가장 큰 차이는 파일시스템의 메타데이터를 무시할 수 있는지 여부이다.
메타데이터는 권한, 타임스탬프 등 파일에 대한 정보이다.
cp 명령어를 사용할 경우 메타데이터가 유지되는 반면
dd 명령어의 경우 이런 것들을 전부 무시하고 원시 데이터만 추출하여 처리할 수 있게 된다.
'IT 공부내용 정리 > Linux' 카테고리의 다른 글
| 터미널 명령어 - badblocks 파일이 깨지거나 저장에 문제가 있다면 (0) | 2025.03.31 |
|---|---|
| 터미널 명령어 - fsck / e2fsck 파일 시스템을 검사하고 싶을 때 (0) | 2025.03.31 |
| 터미널 명령어 - du 디렉토리나 사용자별 디스크 사용량을 알고 싶을 때 (0) | 2025.03.21 |
| 터미널 명령어 - df 파일 시스템별 디스크 사용량을 확인하고 싶을 때 (0) | 2025.03.21 |
| 터미널 명령어 - mkfs / mke2fs 파일 시스템을 생성해줘야 할 때 (0) | 2025.03.21 |