Android/Linux dd [닫기]

Android/Linux dd [닫기]

누구든지 나에게 간단한 예를 들어 줄 수 있습니까? 파티션 크기는 4MB이지만 내부 데이터는 3.1MB입니다. dd3.1MB 만 필요합니다 .

dd if=/dev/block/partition of=/tmp/3.1mb.img bs= skip=

bs그리고 에 대해 혼란스러워요 skip.

답변1

내 Android 버전의 dd 작업은 대부분의 Linux 배포판과 유사한 것 같습니다. 따라서 그것이 수행하는 작업을 설명하는 문서를 보려면 dd 매뉴얼 페이지를 살펴보겠습니다(Google에서 검색할 수 있음).

bs매뉴얼 페이지에는 count및 에 대한 지침이 있습니다 skip.

  bs=BYTES
         read and write up to BYTES bytes at a time (default: 512);
         overrides ibs and obs

  count=N
         copy only N input blocks

  skip=N skip N ibs-sized blocks at start of input

정확한 바이트 수를 찾고 있다면 3.1MB 또는 3.1MiB가 필요한지 결정해야 합니다. 즉, 메가바이트가 1000*1000바이트입니까, 아니면 1024*1024바이트입니까? 다음 예에서는 후자를 가정하겠습니다.

  1. dd if=/dev/block/partition of=/tmp/3.1mb.img count=6349

    위에서 언급한 것처럼 dd의 기본 블록 크기는 512바이트입니다. 따라서 다음은 파티션 시작 부분부터 3.1MiB가 조금 넘는 부분을 복사합니다. 3.1MiB는 정수 바이트( )로 계산할 수 없기 때문에 약간 많습니다 3.1*1024*1024 = 3250585.6. 6349를 사용하는 이유는 3.1 * 1024*1024 / 512 (blocksize) = 6348.8최소 3.1MiB의 데이터가 검색되도록 반올림하기 때문입니다. dd는 블록 크기의 배수로만 데이터를 읽고 쓰므로 이 경우 반올림하면 102바이트가 추가됩니다. 이는 얻는 실제 바이트 수에 관심이 있는 경우 고려해야 할 몇 가지 사항을 보여줍니다.

  2. dd if=/dev/block/partition of=/tmp/3.1mb.img bs=1 count=3250586

    정확한 바이트 수를 원하지만 그 숫자가 특정 숫자의 배수인지 모르는 경우 블록 크기를 원하는 정확한 바이트 수로 설정할 수 1있습니다 count.

  3. dd if=/dev/block/partition of=/tmp/3.1mb.img skip=1K count=6349

    파티션에 복사하려는 데이터가 0.5MB(512KiB 또는 512*1024바이트)라고 가정합니다. 그런 다음 위와 같이 건너뛰기를 사용할 수 있습니다. Kdd의 접미사가 1024바이트를 의미하므로 1K가 사용됩니다 . 블록 크기가 기본 512이므로 이는 512KiB 또는 512 * 1024바이트를 파티션으로 건너뛴다는 의미입니다. 건너뛰는 것은 dd 읽기가 시작되는 입력 파일 지점에 도달하기 위해 입력 파일(이 경우 파티션)의 시작 부분에서 특정 수의 블록을 건너뛰는 것을 의미합니다.

  4. dd if=/dev/block/partition of=/tmp/3.1mb.img bs=1 skip=524288 count=3250586

    초기 512KiB를 건너뛰면서 정확한 바이트 수를 얻으려면 이전 예제를 위 예제로 다시 작성할 수 있습니다.

특정 바이트 수를 복사하므로 count이 옵션을 항상 제공해야 한다는 점을 기억하세요. 그렇지 않으면 dd는 더 이상 읽을 수 없을 때까지 계속 읽습니다. 그러면 원하는 것보다 훨씬 더 많은 데이터를 읽을 수 있습니다.

답변2

간단한 산술:

dd if=/dev/block/partition of=/tmp/partition.img bs=1K count=3100

1KB 곱하기 3100 = 3.1MB 정도입니다.

문제의 파티션이 매우 작은 것이 확실합니까?

관련 정보