1. 명령어 설명

리눅스 dd 명령어는 블록 단위로 파일복사, 파일변환을 수행하는 명령어이다.

리눅스 시스템에서는 디스크도 파일로 간주되므로, 디스크 및 디스크의 파티션을 복제하는데 사용 가능하다.

아래와 같은 용도로 자주 사용된다.

  • 파일 및 장치 복사
  • 디스크 및 파티션 백업/복원
  • 사이즈를 지정한 swap 파일 생성
  • 사이즈를 지정한 더미파일 생성
  • 디스크 I/O 성능 측정
Usage: dd [OPERAND]...
  or:  dd OPTION
Copy a file, converting and formatting according to the operands.

  bs=BYTES        read and write up to BYTES bytes at a time (default: 512);
                  overrides 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          skip N obs-sized blocks at start of output
  skip=N          skip N ibs-sized blocks at start of input
  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 statistics

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.

 

2. 자주 사용하는 옵션

  • bs: 한번에 읽고 쓸 수 있는 최대 바이트 크기. 즉, block size
  • count: 복사할 block 수. 즉, bs * count 크기의 사이즈만큼 복사
  • if: 입력 파일 경로
  • of: 출력 파일 경로

3. 옵션에 사용되는 suffix 단위

  • c: 1byte (Character)
  • w: 2bytes (Word)
  • b: 512bytes (Block)
  • K: 1024bytes (Kibibyte, KiB)

4. 사용예시

[더미파일 생성]

# dd if=/dev/zero of=/dummyfile bs=1024 count=1024

=> 파일을 /dummyfile 경로에 생성하되, 0 문자(정확히는, ASCII NUL(0x00) 문자)를 복사해 채우며, 1024 byte 블록 단위로 1024번에 걸쳐 복사한다.

 

[디스크/파티션 복제]

# dd if=/dev/sdb1 of=/dev/sdc1 bs=1024

=> /dev/sdb1 파티션을 /dev/sdc1 파티션으로 복제하되, 1024byte 블록 단위로 복제한다.

 

[디스크/파티션 초기화]

# dd if=/dev/zero of=/dev/sdb1

=> /dev/sdb1 파티션을 초기화한다.

 

[파일을 복사하며 내용 중 소문자를 모두 대문자로 변환]

# dd if=/log1 of=/log1_upper bs=1024 conv=ucase

=> /log1 의 내용을 /log1_upper 로 1024byte 블록 단위로 복사하며, 모든 소문자를 대문자로 변환한다.

 

*/dev/zero 는 0을 무한히 반환하는 특수 파일

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,

1. swap 파일 생성

명령어: dd if=/dev/zero of=/swapfile1 bs=1024 count=1048576

 

옵션 설명

  • bs: block size 로, byte 단위로 지정(1024byte == 1Kib)
  • count: block 갯수 지정
  • if: 빈 값으로 채우기 위해 /dev/zero 고정
  • of: 스왑파일경로 지정

 

2. swap 파일 권한 변경

명령어: chmod 600 {스왑파일명}

e.g) chmod 600 /swapfile1

 

3. swap 파일에 swap 파일 시스템 생성

swap 포멧으로 설정하는 행위

명령어: mkswap {스왑파일명}

e.g) mkswap /swapfile1

 

4. 부팅시 스왑파일 자동 활성화 설정 및 swap 활성화

/etc/fstab 에 아래 내용을 추가

/swapfile1 swap swap defaults 0 0

 

swapon -a

 

5. 확인

명령어: swapon -s

Type 이 file 인 스왑 생성 확인

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,

1. 디스크 추가

디스크 추가 후 lsblk 로 추가된 디스크 확인

 

2. 스왑용 파티션 생성

fdisk 또는 gdisk 명령어로 생성

명령어: gdisk {블록디바이스명}

e.g) gdisk /dev/sdc

 

안내된 커맨드에 따라 파티션 생성

스왑 파티션의 GUID 를 지정하는데, 이때 L 을 입력하여 스왑 파티션 코드를 확인하여 입력해야함

 

3. swap 파일 시스템 설정

스왑용 파티션을 스왑 타입으로 포멧하는 행위이다.

명령어: mkswap {파티션명}

e.g) mkswap /dev/sdc1

 

이제 blkid {파티션명} 으로 파티션 확인시 TYPE="swap" 으로 확인된다.

 

4. swap 활성화

명령어: swapon {파티션명}

e.g) swapon /dev/sdc1

 

5. swap 활성화 확인

swapon -s

 

6. 부팅시 스왑 파티션 자동 마운트 설정

/etc/fstab 파일에 아래 내용 등록

{스왑파티션명} swap swap defaults 0 0

 

7. /etc/fstab 에 등록된 내용 중 마운트되지 않은 스왑 파티션을 마운트

명령어: swapon -a

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,