DEV Community

loading...
Cover image for Don't fear the command line :  Tar. What  is that?

Don't fear the command line : Tar. What is that?

deniselemonaki profile image Dionysia Lemonaki ・3 min read

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.

expand on that

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
Enter fullscreen mode Exit fullscreen mode

Above we created a single file(archive.tar) that contains the folder.

  • The -c flag stands for create and is used to create the tar file.
  • The v flag stands for verbose 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.

how?

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.

pat

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

These are the absolute basics to get started with tar
Thanks for reading 😃

dog coding

Discussion (5)

pic
Editor guide
Collapse
trueneu profile image
Pavel Gurkov

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 traditional tar argument passing style.

tar cfv archive.tar folder
Enter fullscreen mode Exit fullscreen mode

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. GNU tar supports invocation of gzip, lzma, zstd, bzip2 and others, but nothing stops you from piping tar output to your custom compression algorithm. That's slightly different from GNU zip which, as far as I know, always compresses the information.

Collapse
deniselemonaki profile image
Dionysia Lemonaki Author

Thanks for your comment and adding this! :)

Collapse
moopet profile image
Ben Sinclair

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".

Collapse
waylonwalker profile image
Waylon Walker

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.

Collapse
deniselemonaki profile image
Dionysia Lemonaki Author

Yes same, there are a lot of flags involved 😅