The tar command is one of the utilities that you can use to create a backup on a Linux system. It includes many options that one can use to specify the task to achieve.
One thing to understand is that you can extract tar files to a different or specific directory, not necessarily the current working directory.
You can read more about tar backup utility with many different examples in the following articles, before proceeding further with this article.
In this guide, we shall take a look at how to extract tar files to a specific or different directory, where you want the files to reside.
The general syntax of tar utility for extracting files:
tar -xf file_name.tar -C /target/directory tar -xf file_name.tar.gz --directory /target/directory
Note: In the above syntax, the -C
option is used to specify a different directory other than the current working directory.
Let us now look at some examples below.
How to Extract Tar Files to a Specific Directory
In the first example, I will extract the files in articles.tar to a directory /tmp/my_article
. Always make sure that the directory into which you want to extract the tar file exists.
Let me start by creating the /tmp/my_article
directory using the mkdir command below:
mkdir /tmp/my_article
You can include the -p
option to the above command so that the command does not complain.
To extract the files in articles.tar
to /tmp/my_article
, I will run the command below:
tar -xvf articles.tar -C /tmp/my_article/
In the above example, I used the -v
option to monitor the progress of the tar extraction.
Let me also use the --directory
option instead of -c
for the example above. It works just in the same way.
tar -xvf articles.tar --directory /tmp/my_articles/
How to Extract .tar.gz or .tgz Files to Different Directory
First make sure that you create the specific directory that you want to extract into by using:
mkdir -p /tmp/tgz
Now we will extract the contents of documents.tgz
file to separate /tmp/tgz/ directory.
tar -zvxf documents.tgz -C /tmp/tgz/
How to Extract tar.bz2, .tar.bz, .tbz or .tbz2 Files to Different Directory
Again repeating that you must create a separate directory before unpacking files:
mkdir -p /tmp/tar.bz2
Now we will be unpacking the documents.tbz2
files to /tmp/tar.bz2/ directory.
tar -jvxf documents.tbz2 -C /tmp/tar.bz2/
How to Extract Only Specific or Selected Files from Tar Archive
The tar utility also allows you to define the files that you want to only extract from a .tar file. In the next example, I will extract specific files out of a tar file to a specific directory as follows:
mkdir /backup/tar_extracts tar -xvf etc.tar etc/issue etc/fuse.conf etc/mysql/ -C /backup/tar_extracts/
Summary
That is it with extracting tar files to a specific directory and also extracting specific files from a tar file. If you find this guide helpful or have more information or additional ideas, you can give me feedback by posting a comment.
After going through the article, I have found the solution for extracting XML files to a common folder in Windows using a one-liner for files with names like
name.subname.tar.gz
. This works with paths containing.tar.gz
files without a dot(.)
in the path:mkdir commonxml && for /f "tokens=1,2,3,4 delims=." %i in ('dir /b /s *.tar.gz') do @tar -zvf "%i.%j.%k.%l" -t "*%~ni.xml" && @tar --strip-components 1 -C ./commonxml/ -zxvf "%i.%j.%k.%l" "*/%~ni.xml" || @echo "Error occurred: file not found, skipping..."
Great article.
Just to note that “Example 4: Extract Only Specific or Selected Files from Tar Archive” is the wrong syntax.
The order of the arguments has to be changed. The single files or directories to be extracted need to be last:
It shall read
reference: https://stackoverflow.com/a/9249779
Your blog is very good, your blog has great information, your content is also very good, your blog has got a lot of help.
@SHIVANI
I would like you to know that we are pleased to have read your beautiful and kind note of appreciation and encouragement.
Hi,
tar command accepts options without minus[-] sign
also ‘-j’ option is optional and can be ignore….
example:
tar xvf …..
Thanks a lot
@Jalal Hajigholamali Welcome, and thanks for the info also
When I extract only specific files from Tar archive, ‘-C’ option is doesn’t work.
@Ren,
Have you created the separate directory before extracting the specific files to that directory? The -C option is used to specify a different directory and it must exists before extracting files.
For example,
Else, you can also extract files withing the current directory without creating a new directory like:
powertop-2.7/m4/po.m4
I have the same issue as @Ren, and in my case I have created the destination dir… no matter how I specify things the extracted file always ends up in the current directory.
Oh… if I change the order it works. If I move the “–directory ” earlier in the args, it works.
In the last example, extracting several files from the etc directory out of the tar file, what is the cts/ in the first line of the extracted files?
Great post. It would be helpful for Linux beginners to explain the switches used. What does -xf do? You explain the addition of the -v switch which is good. What’s the difference between -C and –directory? In Example 2, you throw in the -z switch and in Example 3, the -j switch without any explanation. Then in example 4, you talk about extracting single files, yet the command also includes an option to extract all files in a specific directory – etc/mysql/. Again, a good example for using different options, but it could use a bit of explanation.
@Konrad,
Yes, we haven’t specified the meaning of each tar command option used in these examples, the reason because we’ve already requested users to read the article that says Mastering tar Command with this 18 Examples in Linux, before heading up further. No issue you can find all these options explanation below: