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 개의 상자 만 움직입니다. 당신이 말할 경우 dd에 count5, 어딘가에 그것을 쓰기, 그는보고 처음 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.