fs.image
단일 파일 시스템을 포함하는 루프백 파일이 있습니다 . 이를 . 여러 파티션과 여러 파일 시스템을 포함하는 훨씬 더 큰 또 다른 루프백 파일이 있습니다 disk.image
. 이를 .
fs.image
의 파티션 중 하나와 정확히 같은 크기입니다 disk.image
. 해당 disk.image
파일의 데이터를 올바른 위치에 복사하고 싶습니다 .
적절한 오프셋을 계산하고 dd
. 블록 장치와 함께 작동하기 때문에 이것이 작동할 것이라고 생각했지만 그렇지 않습니다. disk.image
방금 작성된 데이터 바로 다음 위치에서 잘립니다.
dd
파일이 잘리지 않게 하는 방법이 있나요 ?
fs.image
로 압축되었으며 fs.image.bz2
, 제가 실행하는 명령은 다음과 같습니다:
bzcat fs.image.bz2 | dd of=disk.image bs=4M seek=$OFFSET
$OFFSET
계산된 오프셋은 어디에 있나요?
나는 이것을 달성하는 다른 방법에 대해 생각해 보았지만 이것이 (효과가 있었다면) 가장 간단한 것 같습니다. 일단 옵션은 삽입 지점까지 데이터를 다른 파일에 복사하고, 파일 시스템을 추가하고, 마지막으로 원본 파일의 나머지 부분을 추가하는 것입니다. 그러나 실제로 필요하지 않은 많은 데이터를 복사하게 되므로 속도가 느려질 수 있습니다. 나는 다른 옵션을 선택할 수 있습니다.
답변1
GNU dd
(최소 버전 8.23)에는 다음이 있습니다.변환 플래그
notrunc 출력 파일을 자르지 마십시오
당신이 원하는 것을 정확히 수행합니다. 여기에 작은 예가 있습니다:
$ cat foo
foobar
$ echo -n XX | dd of=foo bs=1c seek=1 conv=notrunc
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.000283698 s, 7.0 kB/s
$ cat foo
fXXbar