Normally, tar will request data in full record increments from
an archive storage device. If the device cannot return a full record,
tar will report an error. However, some devices do not always
return full records, or do not require the last record of an archive to
be padded out to the next record boundary. To keep reading until you
obtain a full record, or to accept an incomplete record if it contains
an end-of-archive marker, specify the --read-full-records (-B) option
in conjunction with the --extract or --list operations.
See Blocking.
The --read-full-records (-B) option is turned on by default when
tar reads an archive from standard input, or from a remote
machine. This is because on BSD Unix systems, attempting to read a
pipe returns however much happens to be in the pipe, even if it is
less than was requested. If this option were not enabled, tar
would fail as soon as it read an incomplete record from the pipe.
If you're not sure of the blocking factor of an archive, you can
read the archive by specifying --read-full-records (-B) and
--blocking-factor=512-size (-b
512-size), using a blocking factor larger than what the archive
uses. This lets you avoid having to determine the blocking factor
of an archive. See Blocking Factor.