Linux tar: /dev/st0: Cannot write: Invalid argument error and solution

last updated in Categories , , , , , , , ,

Q. When I run tar command it fails with an error that read as follows:

tar: /dev/st0: Cannot write: Invalid argument

How do I fix this error under CentOS / Debian / Fedora / RHEL Linux HP server systems?

A. You need to specify the block factor size. If you try to write a large file on tape this error may occur.

The data in an archive is grouped into blocks, which are 512 bytes. Blocks are read and written in whole number multiples called records. The number of blocks in a record (i.e., the size of a record in units of 512 bytes) is called the blocking factor.

Archives with blocking factors larger than 20 cannot be read by very old versions of tar, or by some newer versions of tar running on old machines with small address spaces. With GNU tar, the blocking factor of an archive is limited only by the maximum record size of the device containing the archive, or by the amount of available virtual memory.

How do I fix this error?

Set blocking factor to 256 to avoid this error with the -b option. For example, use the following command to backup the /webroot directory and its content to /dev/st0 with 256 blocking factor:
# tar cvf -b 256 /dev/st0 /webroot

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

2 comment

  1. hi! I just want to ask how could I restore Linux OS to my netbook. I encountered a problem when I change my OS to WXP (NTLDR error) so I try to recover it back to linux but then when Im trying to do it has an error “invalid argument” I hope that you would somehow help me solve my problem.

    Still, have a question? Get help on our forum!