dd(1)

Copy data block-wise.

dd [opts]
    if=<path>         input file to read (stdin in case not specified)
    of=<path>         oputput file to write
    status=progress   show progress while copying
    bs=<bytes>        block size
    count=<n>         copy only <n> blocks
    skip=<n>          skip <n> blocks in input (seek input)
    seek=<n>          skip <n> blocks in oputput (seek output)
    conv=<conv>
         notrunc      dont truncate output file
         excl         fail if output already exists
         nocreat      fail if output does not exists

Example: bootstick

dd bs=4M if=<iso> of=<blkdev> oflag=sync status=progress

Example: patch file in place

# Create a 1024 bytes file filled with zeros.
dd if=/dev/zero of=disk bs=512 count=2

# Overwrite 4 bytes starting at byte 0.
printf "aaaa" | dd of=disk bs=1 seek=0 conv=notrunc

# Overwrite 4 bytes starting at byte 512.
printf "bbbb" | dd of=disk bs=1 seek=512 conv=notrunc

hexdump disk
# 0000000 6161 6161 0000 0000 0000 0000 0000 0000
# 0000010 0000 0000 0000 0000 0000 0000 0000 0000
# *
# 0000200 6262 6262 0000 0000 0000 0000 0000 0000
# 0000210 0000 0000 0000 0000 0000 0000 0000 0000
# *
# 0000400