Coder Perfect

Tar archiving using a list of files as input

Problem

I have a list of files I wish to archive with tar in a file. Let’s call it mylist.txt for short.

It contains:

file1.txt
file2.txt
...
file10.txt

Is there a way to use the TAR command with mylist.txt as the input? anything along those lines

tar -cvf allfiles.tar -[someoption?] mylist.txt

As if I were to issue the following command:

tar -cvf allfiles.tar file1.txt file2.txt file10.txt 

Asked by neversaint

Solution #1

Yes:

tar -cvf allfiles.tar -T mylist.txt

Answered by Martin York

Solution #2

The -T or —files-from option is what you want if you’re using GNU tar (since this is Linux).

Answered by Simon Richter

Solution #3

You can also pipe in the file names which might be useful:

find /path/to/files -name \*.txt | tar -cvf allfiles.tar -T -

Answered by woot

Solution #4

Because some versions of tar, such as the default versions on HP-UX (I tried 11.11 and 11.31), lack a command-line option to supply a file list, this is a good workaround:

tar cvf allfiles.tar $(cat mylist.txt)

Answered by barush

Solution #5

On Solaris, you can use the -I option to read filenames from a file instead of specifying them on the command line. Unlike the command line, this allows you to generate tar archives with hundreds of thousands of files (just did that).

As an example, consider the following:

tar -cvf allfiles.tar -I mylist.txt

Answered by Jan

Post is based on https://stackoverflow.com/questions/8033857/tar-archiving-that-takes-input-from-a-list-of-files