Tar archiving that takes input from a list of files

LinuxUnixArchiveTar

Linux Problem Overview


I have a file that contain list of files I want to archive with tar. Let's call it mylist.txt

It contains:

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

Is there a way I can issue TAR command that takes mylist.txt as input? Something like

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

So that it is similar as if I issue this command:

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

Linux Solutions


Solution 1 - Linux

Yes:

tar -cvf allfiles.tar -T mylist.txt

Solution 2 - Linux

Assuming GNU tar (as this is Linux), the -T or --files-from option is what you want.

Solution 3 - Linux

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

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

Solution 4 - Linux

Some versions of tar, for example, the default versions on HP-UX (I tested 11.11 and 11.31), do not include a command line option to specify a file list, so a decent work-around is to do this:

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

Solution 5 - Linux

On Solaris, you can use the option -I to read the filenames that you would normally state on the command line from a file. In contrast to the command line, this can create tar archives with hundreds of thousands of files (just did that).

So the example would read

tar -cvf allfiles.tar -I mylist.txt

Solution 6 - Linux

For me on AIX, it worked as follows:

tar -L List.txt -cvf BKP.tar

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionneversaintView Question on Stackoverflow
Solution 1 - LinuxMartin YorkView Answer on Stackoverflow
Solution 2 - LinuxSimon RichterView Answer on Stackoverflow
Solution 3 - LinuxwootView Answer on Stackoverflow
Solution 4 - LinuxbarushView Answer on Stackoverflow
Solution 5 - LinuxJanView Answer on Stackoverflow
Solution 6 - LinuxCassiano BucciView Answer on Stackoverflow