dd 명령을 사용하여 파일을 다른 파일의 특정 위치로 복사하는 방법은 무엇입니까?

dd 명령을 사용하여 파일을 다른 파일의 특정 위치로 복사하는 방법은 무엇입니까?

ddLinux에서 명령을 사용하여 특정 위치에 있는 256바이트 파일을 임의의 데이터가 포함된 다른 2048바이트 크기 파일로 복사 하고 싶습니다 . 내 오프셋은 입니다 144. bs=1, count=256및 이라고 가정합니다 seek=144. 내가 실행한 명령은 다음과 같습니다.

dd if=file1.data of=file2.data bs=1 count=256 seek=144

그러나 실행해 보면 file2.data의 크기는 여전히 2048바이트이지만 줄어들어야 합니다. 누군가 내 명령이 잘못된 이유와 파일이 올바른 위치에 있는지 확인하는 방법을 알아내도록 도와줄 수 있습니까?

답변1

하지만 실행해 보면 file2.data크기는 여전히 2048바이트이지만 줄어들어야 합니다.

이 동작은 문서화되어 있습니다.

of=file
출력 경로 이름을 지정합니다. 기본값은 표준 출력입니다. [...] 지정했지만 지정하지 않은 경우 복사 효과는 출력 파일에서 발견된 블록을 보존하지만 출력 파일의 다른 부분은 보존하지 않습니다. (조회 크기에 입력 파일 크기를 더한 값이 이전 출력 파일 크기보다 작을 경우 출력 파일을 복사하여 줄여야 합니다. [...])seek=exprconv=notruncdd

(원천)

사용 conv=notrunc. 피연산자는 이식 가능합니다.

conv=value[,value ...]

[…]

notrunc
출력 파일을 자르지 마십시오. dd 유틸리티를 호출하여 명시적으로 작성되지 않은 블록을 출력 파일에 보존합니다. […]

(같은 상기와)

그렇지 않으면 명령이 좋아 보입니다. 수정된 명령:

dd if=file1.data of=file2.data bs=1 count=256 seek=144 conv=notrunc

관련 정보