When I first heard of the tar
command I was confused and could not quite understand it's use. How is that command useful in the day-to-day use of Linux and how often does it actually get used? Not to mention that it has all these flags to go alongside it, it was very confusing to me at first sight.
What is Tar?
The tar
command stands for tape archive
and is used to group many files and directories into a single compressed archive. That way it can be moved from disc to disc, from machine to machine and sent over to someone else. The same command is also used to extract that archive that we create.
It is essentially a zip file.
The general syntax looks something along these lines:
tar [flags] [archive-file] [file or directory to be archived]
The absolute basics to get started
To put a folder into an archive (let's say in this case a folder named folder
-very creative naming) we would do the following:
tar -cvf archive.tar folder
Above we created a single file(archive.tar
) that contains the folder.
- The
-c
flag stands forcreate
and is used to create the tar file. - The
v
flag stands forverbose
and displays the progress of the action. - The
f
flag creates archive with given filename(archive.tar
)
While experimenting with the flags and changing their order I noticed that when I used -cfv
I got an error whereas when I used -cvf
like I showed in the example, it worked.
I guessed that the order must be very important.After some research with my best friend lately(stackoverflow) I learnt that when the flags are used together , the dash in front of them is optional. However, if we use the dash we must use the flags in the accurate order otherwise it won't work.
So, we created our archive and now we want to extract it.
To extract our archive.tar
file we switch the -c
flag which is used to create
and we instead use the -x
flag which stands for extract
.
tar -xvf archive.tar
The archive we created earlier was not compressed, and most times we want to compress it as it it significantly smaller in size as it gets run through gzip .
To create an archive that is compressed we use the -z
flag which stands for compress the tar file using gzip
tar -czvf archive.tar.gz folder
Again,If using the -
in front of the flags it's important to remember the right order.
If we type ls -ls
to see a list
with of the files we have and information about, including their size( that's what the s
stands for) then we'll notice than archive.tar.gz
is significantly smaller in size than archive.tar
.
To extract it we then use:
tar -xzvf archive.tar.gz
We could use the -C
flag and a destination folder for where we want the files to go. That folder must exist already before this action.If we leave that flag of it'll extract the archive where ever we are .
tar -xzvf archive.tar.gz -C destination-folder
These are the absolute basics to get started with tar
Thanks for reading 😃
Top comments (6)
If you don't want to remember that in the short option cluster the
-f
has to come last, you may as well use the traditionaltar
argument passing style.Also, I have to note that saying that "tar archive is essentially a zipfile" is a bit backwards. First,
tar
is 10 years older than zip. Second, ZIP is a format that supports compression with a number of algorithms. TAR archives are, essentially, bytestreams, with whatever compression algorithm you want put on top. GNUtar
supports invocation of gzip, lzma, zstd, bzip2 and others, but nothing stops you from pipingtar
output to your custom compression algorithm. That's slightly different from GNUzip
which, as far as I know, always compresses the information.Thanks for your comment and adding this! :)
The
f
needs to be the last flag in a group because it requires a parameter, and if you did-cfv
it would be ambiguous as to whether you wanted to create a file called "v".I had no idea it stood for tape archive!
also x vs c make more sense now. I almost always need to look up tar flags if I haven't ran them within the last few hours.
Yes same, there are a lot of flags involved 😅
Now i know what is the exact use of tar, thankyou Dionysia, Great work 👏