VD> osync Pad the final output block to the full output block size. If VD> the input file is not a multiple of the out- put block size after VD> conversion, this conversion forces the final output block to be the VD> same size as preceding blocks for use on devices that require VD> regularly sized blocks to be written. This option is incompatible VD> with use of the bs=n block size specification.
Я ведь не поленился провести эксперимент с osync. Сделал файл некратного размера 1048577 байт. При попытке его "dd bs=64k" возникает ошибка "(sa0:sym0:0:5:0): Invalid request. Variable block device requests must be between 4 and 16777212 bytes"
Ладно, применяем способ с osync.
dd if=sobaka of=$TAPE conv=osync obs=64k
файл конечно записался без сообщений об ошибках, но... это уже не тот файл. При считывании его с ленточки он удлинился и md5 стал другой.
Так что либо я совет воспользоваться osync как-то неправильно понял, или это вредительский совет. Если tar и способен распознать паддинг в конце архива, то с произвольным файлом так поступать ни в коем случае нельзя.