Learn how to create tar file in Linux or Unix operating system. Understand how to create, list, extract tar files with preserving file permissions.
TAR is a short form of tape archive. They are used to sequentially read or write data. Compiling a huge file list or deep directory structure into a single file (tar file) is what we are seeing in this post. This resulting single file sometimes termed as tarball as well.
Creating tape archives of files or directories is extremely important when you are planning to FTP a huge pile of them to another server. Since each file opens a new FTP session and closes it after transfer finishes, if the number of files is huge then FTP takes forever to complete data transfer (even if size of each file is small). Even if you have an ample amount of bandwidth, due to session open and close operations FTP slows down to knees. In such cases, archiving all files in single tarball makes sense. This single archive can transfer at maximum speed and making transfer quickly. After transfer, you can again expand the archive and get all files in place the same as the source.
Normally its good practice to first zip files or directories and then create a tape archive of it. Zipping reduces their size and tar packs these reduced size files in single tarball! In Linux or Unix, command
tar is used to create a tar file. Let’s see different operations that can be handled by
How to create tar file :
To create tar file
-c option is used with tar command. It should be followed with the filename of the archive, normally it should have *.tar extension. It for users to identify its a tar archive, because Linux/Unix really don’t care about an extension.
# tar -cvf file.tar file2 file3 file2 file3 # ll total 32 -rw-r--r-- 1 root users 40 Jan 3 00:46 file2 -rw-r--r-- 1 root users 114 Jan 3 00:46 file3 -rw-r--r-- 1 root users 10240 Jan 9 10:22 file.tar
In the above output, we have used
-v (verbose mode) for
-c option. file.tar is archive name specified and the end of the command is stuffed with a list of files to be added in the archive. The output shows filename on the terminal which is currently being added to the archive. Once all files are processed, you can see the new archive in the specified path.
To add directories in the tar file, you need to add directory path at end of the same command above.
# tar -cvf dir.tar dir4/ dir4/ dir4/file.tar dir4/file1 dir4/file3 dir4/file2
If you use a full absolute path in command then tar will remove leading
/ so making members path relative. When archive will be deflated then all members will have a path starting with the current working directory/specified directory rather than leading
# tar -cvf dir2.tar /tmp/dir4 tar: Removing leading `/' from member names /tmp/dir4/ /tmp/dir4/file.tar /tmp/dir4/file1 /tmp/dir4/file3 /tmp/dir4/file2
You can see
/ being removed warning in output above.
How to view content of tar file :
Tar file content can be viewed without deflating it.
-t i.e. table option does this task. It shows file permissions, ownerships, size, date timestamp, and relative file path.
# tar -tvf dir4.tar drwxr-xr-x root/users 0 2017-01-09 10:28 tmp/dir4/ -rw-r--r-- root/users 10240 2017-01-09 10:22 tmp/dir4/file.tar -rw-r--r-- root/users 10240 2017-01-09 10:21 tmp/dir4/file1 -rw-r--r-- root/users 114 2017-01-03 00:46 tmp/dir4/file3 -rw-r--r-- root/users 40 2017-01-03 00:46 tmp/dir4/file2
In the above output, you can see the mentioned parameters in the same sequence displayed. Relative file path means when this tar file extracts it will create files of directories in PWD or path specified in the command line. For example in the above output, if you extract this file in
/home/user4/data directory then it will create
tmp directory under
/home/user4/data and extracts all files in it i.e. under
How to extract tar file :
-x option extracts files from the tar file. As explained above, it will extract files and directories within tar into a relative path.
# tar -xvf dir4.tar tmp/dir4/ tmp/dir4/file.tar tmp/dir4/file1 tmp/dir4/file3 tmp/dir4/file2 # ll total 36 -rw-r--r-- 1 root users 30720 Jan 9 10:28 dir4.tar drwxr-xr-x 3 root users 4096 Jan 9 10:46 tmp # ll tmp total 4 drwxr-xr-x 2 root users 4096 Jan 9 10:28 dir4 # ll tmp/dir4 total 32 -rw-r--r-- 1 root users 10240 Jan 9 10:21 file1 -rw-r--r-- 1 root users 40 Jan 3 00:46 file2 -rw-r--r-- 1 root users 114 Jan 3 00:46 file3 -rw-r--r-- 1 root users 10240 Jan 9 10:22 file.tar
In the above outputs, step by step you can see
dir4 structure created by tar command and extracted all files within it.
There are also few more options supported by tar-like appending files in the existing archives, zipping, updating new files in the existing archives, etc. We will see them in another post later. Leave us comments if you have any queries or suggestions.