Untar only a certain number of files from a large tarball

tar

I have a large tarball that is busy being FTP'd over from a remote system to our local system.

I want to know if it is possible to start untarring lets say 50 files at a time so that those files can begin being processed while the transfer takes place.

Best Answer

Here is a detailed explanation on how it is possible to extract specific files from an archive. Specifically GNU tar can be used to extract a single or more files from a tarball. To extract specific archive members, give their exact member names as arguments.

For example:

tar --extract --file={tarball.tar} {file}

You can also extract those files that match a specific globbing pattern (wildcards). For example, to extract from cbz.tar all files that begin with pic, no matter their directory prefix, you could type:

tar -xf cbz.tar --wildcards --no-anchored 'pic*'

To extract all php files, enter:

tar -xf cbz.tar --wildcards --no-anchored '*.php'

Where,

-x: instructs tar to extract files.
-f: specifies filename / tarball name.
-v: Verbose (show progress while extracting files).
-j: filter archive through bzip2, use to decompress .bz2 files.
-z: filter archive through gzip, use to decompress .gz files.
--wildcards: instructs tar to treat command line arguments as globbing patterns.
--no-anchored: informs it that the patterns apply to member names after any / delimiter.

Related Question