How to Combine and Compress files on Linux using the TAR command
Tags: linux, ubuntu, bash, tutorial
Published: 2023-03-27 04:45:04

Linux provides various utilities to compress and combine files, with the `tar` command being one of the most commonly used. `tar` stands for "tape archive", and is a versatile utility for creating and manipulating compressed archive files. It is a powerful tool that can be used for a variety of tasks, from creating backups of important files to compressing multiple files into a single archive.

***The basic syntax of the tar command is as follows:***

```bash
tar [options] archive_name files_or_directories
```

Here, `options` are the various flags that can be used to modify the behavior of the command, such as `-c` for creating a new archive, `-x` for extracting files from an archive, and `-z` for compressing or decompressing an archive using gzip.

`archive_name` is the name of the archive file that will be created or operated on, and `files_or_directories` is a list of one or more files or directories that will be included in the archive.

For example, to create a new tarball of a directory called `my_folder`, you could use the following command:

```bash
tar -czvf my_folder.tar.gz my_folder/
```

Here, the `-c` flag indicates that a new archive should be created, the `-z` flag specifies that the archive should be compressed with gzip, the `-v` flag enables verbose output so that the user can see which files are being added to the archive, and the `f` flag specifies the name of the archive file.

To extract the contents of the tarball, you can use the following command:

```bash
tar -xzvf my_folder.tar.gz
```

Here, the `-x` flag indicates that the files should be extracted from the archive, and the other flags have the same meanings as before.

Overall, the `tar` command is a versatile and powerful tool that is essential for managing and manipulating archive files in Linux.

---

### Simple Examples

```bash
# Create archive.tar from files foo and bar.
tar -cf archive.tar foo bar

# List all files in archive.tar verbosely.
tar -tvf archive.tar               

# Extract all files from archive.tar.
tar -xf archive.tar

# Compress directory baz into archive.tar.gz
tar -czvf archive.tar.gz baz/
```

`-c`, `--create` ***create a new archive***  
`-t`, `--list` ***list the contents of an archive***  
`-x`, `--extract`, `--get` ***extract files from an archive***  
`-v`, `--verbose` ***verbosely list files processed***  
`-f`, `--file=ARCHIVE` ***use archive file or device ARCHIVE***  
`-z`, `--gzip`, `--ungzip` ***use the gzip compression format***

---

### Difference between TAR and ZIP files

The `tar` file is a file format in itself designed for tape archives. This format can then be compressed using (for example) `gzip` or `bzip2` compression formats. When you extract a compressed `tar` file, you effectively uncompress it, then extract the original files from the uncompressed `tar` file.  
  
The `zip` tool is a completely different thing. It takes a bunch of files and combines them into *a single compressed file*. With totally different algorithms.

The `tar` tool is just combining several files into a single file without any compression.  
The `gzip` tool is just compressing a single file.  
If you want to have both, you just combine both tools resulting in a `.tar.gz` file.

***For more info:***

Visit the man page for `tar` on your shell:

`man tar`