How to create tar archive split into, or spanning, multiple files?
According to this page, one can let tar create a tar archive "split" into 100 Mb files:
tar -c -M --tape-length=102400 --file=disk1.tar largefile.tgz
The problem is that this command will require you to interactively give a new filename for the next file, after the first file is filled.
Anybody knows of a way to skip this interactive step, and let tar do the "splitting" automatically?
Solution 1:
Take a look at the --new-volume-script
option, which lets you replace the prompting mechanism with a different mechanism or with a generated filename. ((tar.info)Multi-Volume Archives
in the tar
info page.) The problem with split
is that you need to cat
the pieces back together to do anything, whereas a multivolume archive should be a bit more flexible.
Solution 2:
You can use split for this:
tar czpvf - /path/to/archive | split -d -b 100M - tardisk
This tells tar to send the data to stdout, and split to pick it from stdin - additionally using a numeric suffix (-d
), a chunk size (-b
) of 100M and using 'tardisk' as the base for the resulting filenames (tardisk00, tardisk01, tardisk02, etc.).
To extract the data afterwards you can use this:
cat tardisk* | tar xzpvf -
Solution 3:
Of course the best option to use is the --new-volume-script
option.
But, if you know the size of the file (in this case, largefile.tgz), then you can do this also:
tar -c -M -L 102400 --file=disk1.tar --file=disk2.tar --file=disk3.tar largefile.tgz
Summary:
-c = Create
-M = multi-volume
-L 102400 = 100MB files (disk1.tar, disk2.tar, disk3.tar ...)
(For the -L, specify as many as needed so that the total sum of the tar files is larger than largefile.tgz)
If you are trying to tar
a directory tree structure
Solution 4:
it will automatically create files of size 1.1GB, if your tar is bigger in size, you can increase the number, for an example 1000 {2..1000} or you can increase the input to tape-length argument.
tar --tape-length=1048576 -cMv --file=tar_archive.{tar,tar-{2..100}} backup.tar.lzma