dd 명령에서 'bs', 'count'및 'seek'의 차이점은 무엇입니까?


24

나는 사용 방법을 설명하는 많은 안내서와 포럼 게시물을 읽었 dd지만 사람들이 항상 bs=, count=seek=스위치에 대해 서로 다른 값을 사용한다는 것을 알았습니다 .

누군가이 스위치가 정확히 무엇을 설명하는지 (man 페이지가 매우 상세하지는 않음), / dev / random 또는 / dev / zero에서 파일을 작성하고 덮어 쓰기와 같은 다른 작업에 가장 적합한 설정을 설명 할 수 있습니다. 파티션 및 외장 드라이브.


dd 또는 POSIX 버전GNU 문서를 사용해보십시오 .
jw013

답변:


27

맨 페이지보다 더 잘 설명하는 방법을 모르겠습니다.

bs=블록 크기를 설정합니다 (예 : bs=1M1MiB 블록 크기).

count=이 수의 블록 만 복사합니다 (기본값은 dd가 계속 또는 입력이 끝날 때까지 지속됨). 블록 bs=크기 는 이상적 이지만 읽기가 불완전 할 수 있으므로 count=특정 양의 데이터를 복사하기 위해 사용하는 경우 ( count*bs)도 제공해야합니다 iflag=fullblock.

seek= 출력 장치의 맨 처음에 쓰는 대신 출력에서이 블록 수를 찾습니다.

예를 들어 1MiB를 출력 파일의 8MiB y\n위치에 복사 합니다. 따라서 총 파일 크기는 9MiB입니다.

$ yes | dd bs=1M count=1 seek=8 iflag=fullblock of=outputfile
$ ls -alh outputfile
9.0M Jun  3 21:02 outputfile
$ hexdump -C outputfile
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00800000  79 0a 79 0a 79 0a 79 0a  79 0a 79 0a 79 0a 79 0a  |y.y.y.y.y.y.y.y.|
*
00900000

/dev/random파티션 을 언급 하고 덮어 쓰기 때문에 ... /dev/random뿐만 아니라 /dev/urandom속도가 너무 느리기 때문에 시간이 오래 걸립니다 . 당신은 shred -v -n 1대신에 사용할 수 있습니다. 그것은 빠르고 일반적으로 어디서나 사용할 수 있습니다.


21

좋아, 당신은 매뉴얼 페이지가 상세하지 않다고 말했기 때문에 움직이는 사람에 대한 은유를 이해하기 쉽게 설명합니다 (의 이름으로갑니다 dd).

   bs=BYTES
          read and write up to BYTES bytes at a time

dd상자 (화병, 화병, 침대, 밥 등)를 집어 들고 필요한 곳으로 옮겨서 떨어 뜨립니다. 그는 짐을 떨어 뜨리지 않을 때까지 다른 것을 고르지 않습니다. 이제 여행 당 얼마나 많은 물건을 선택해야하는지 알려야 할 때bs . 그가 읽고 쓸 데이터의 양을 설정합니다. 이것은 모든 유용하고 일반적인 명령에서 거의 필수입니다.

   count=N
          copy only N input blocks

이것은 그가 움직일 박스의 총량을 결정합니다. 이 컨텍스트의 상자 는 디스크블록입니다 . 당신은 그에게 5 개의 상자를 옮기라고 말하고, 5 개 이상의 상자가 있더라도 5 개의 상자 만 움직입니다. 당신이 말할 경우 ddcount5, 어딘가에 그것을 쓰기, 그는보고 처음 5 개 블록을 복사합니다 당신이 원하는 위치에 쓰기.

   seek=N skip N obs-sized blocks at start of output

남자는 일반적으로 부하를 떨어 뜨릴 수있는 첫 번째 장소를 찾으며, 이것은 일반적으로 디스크의 시작 부분에 있으며 끝까지 계속 채워집니다. 글쎄, 이것으로 당신 dd은 홀 대신에 더 시작하도록 말하고 방 중 하나에서 더 시작하십시오. 시작 블록을 "건너 뛰기"합니다.

이제 수행중인 작업에 따라 소스 및 대상을 기반으로 다른 조합과 읽기 및 쓰기 형식이 필요합니다. 분리하여 검색하는 것이 좋습니다.


"그는 상자 외에 찾은 꽃병을 가져다 놓을 것이다". 이 은유의 의미는 무엇입니까?
Ini

1
@Ini if ​​read에 속하지 않은 인접 블록이 있다면, dd는 그것을 읽고 이동시킵니다. 꽃병은 상자가 아니지만 dd가 움직입니다.
Braiam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.