How to copy a file from a specified offset efficiently

The answer is simple if you know "dd" well. I didn't (know about the skip_bytes and count_bytes iflag options).

This should do it (on gnu dd):
dd if=somefile bs=4096 skip=1337 count=31337000 iflag=skip_bytes,count_bytes
In case you are using seek= as well, you may also consider oflag=seek_bytes.

From info dd:
  • count_bytes: Interpret the count= operand as a byte count, rather than a block count, which allows specifying a length that is not a multiple of the I/O block size. This flag can be used only with iflag.
  • skip_bytes: Interpret the skip= operand as a byte count, rather than a block count, which allows specifying an offset that is not a multiple of the I/O block size. This flag can be used only with iflag.
  • seek_bytes: Interpret the seek= operand as a byte count, rather than a block count, which allows specifying an offset that is not a multiple of the I/O block size. This flag can be used only with oflag.

Syndicate content