Cheatsheet & Examples: tar

HongHong
5 min read

tar is a command-line utility for creating, extracting, and managing archive files, commonly used for packaging and compressing files in Unix-like systems. It supports various compression methods and file operations.

Create a tar archive

Example Usage:
tar -cvf archive.tar file1 file2
What it does:
Creates a non-compressed tar archive named archive.tar containing file1 and file2.
Command-line Arguments Explained:

  • -c: Creates a new archive.
  • -v: Enables verbose mode to display progress.
  • -f: Specifies the archive filename (followed by the name, e.g., archive.tar).

Extract a tar archive

Example Usage:
tar -xvf archive.tar
What it does:
Extracts the contents of archive.tar to the current directory.
Command-line Arguments Explained:

  • -x: Extracts files from the archive.
  • -v: Displays the extracted files.
  • -f: Specifies the archive filename.

Create a compressed tar archive (gzip)

Example Usage:
tar -czvf archive.tar.gz file1 file2
What it does:
Creates a gzip-compressed tar archive named archive.tar.gz with file1 and file2.
Command-line Arguments Explained:

  • -c: Creates a new archive.
  • -z: Compresses the archive using gzip.
  • -v: Enables verbose mode.
  • -f: Specifies the archive filename.

Extract a compressed tar archive (gzip)

Example Usage:
tar -xzvf archive.tar.gz
What it does:
Extracts the contents of a gzip-compressed tar archive (archive.tar.gz) to the current directory.
Command-line Arguments Explained:

  • -x: Extracts files from the archive.
  • -z: Decompresses the archive using gzip.
  • -v: Displays the extracted files.
  • -f: Specifies the archive filename.

List contents of a tar archive

Example Usage:
tar -tvf archive.tar
What it does:
Lists the files and directories in archive.tar without extracting them.
Command-line Arguments Explained:

  • -t: Lists the contents of the archive.
  • -v: Displays detailed information (e.g., permissions, sizes).
  • -f: Specifies the archive filename.

Append files to an existing tar archive

Example Usage:
tar -rvf archive.tar file3
What it does:
Adds file3 to the end of archive.tar without overwriting existing content.
Command-line Arguments Explained:

  • -r: Appends files to the archive.
  • -v: Displays the files being added.
  • -f: Specifies the archive filename.

Update an existing tar archive

Example Usage:
tar -uvf archive.tar file1
What it does:
Updates the archive with file1 if it has changed since the last addition.
Command-line Arguments Explained:

  • -u: Updates the archive by adding newer files.
  • -v: Displays the update progress.
  • -f: Specifies the archive filename.

Extract to a specific directory

Example Usage:
tar -xvf archive.tar -C /path/to/directory
What it does:
Extracts the contents of archive.tar into the specified directory (/path/to/directory).
Command-line Arguments Explained:

  • -x: Extracts files from the archive.
  • -v: Displays extracted files.
  • -f: Specifies the archive filename.
  • -C: Changes to the target directory before extraction.

Exclude specific files or directories

Example Usage:
tar -cvf archive.tar --exclude='*.log' directory/
What it does:
Creates an archive of directory/ while excluding all .log files.
Command-line Arguments Explained:

  • -c: Creates a new archive.
  • -v: Displays progress.
  • -f: Specifies the archive filename.
  • --exclude: Ignores files matching the specified pattern.

Extract specific files from an archive

Example Usage:
tar -xvf archive.tar file1 file2
What it does:
Extracts only file1 and file2 from archive.tar.
Command-line Arguments Explained:

  • -x: Extracts files from the archive.
  • -v: Displays the extracted files.
  • -f: Specifies the archive filename.

Compress using bzip2

Example Usage:
tar -cjvf archive.tar.bz2 file1
What it does:
Creates a bzip2-compressed tar archive (archive.tar.bz2) with file1.
Command-line Arguments Explained:

  • -c: Creates a new archive.
  • -j: Compresses using bzip2.
  • -v: Enables verbose mode.
  • -f: Specifies the archive filename.

Decompress using xz

Example Usage:
tar -xJvf archive.tar.xz
What it does:
Extracts a tar archive compressed with xz (archive.tar.xz).
Command-line Arguments Explained:

  • -x: Extracts files.
  • -J: Decompresses using xz.
  • -v: Displays extracted files.
  • -f: Specifies the archive filename.

Preserve file permissions during extraction

Example Usage:
tar -xvf archive.tar -p
What it does:
Extracts files while preserving their original permissions.
Command-line Arguments Explained:

  • -x: Extracts files.
  • -v: Displays extracted files.
  • -f: Specifies the archive filename.
  • -p: Preserves file permissions (equivalent to --same-permissions).

Example Usage:
tar -xvf archive.tar -h
What it does:
Extracts files without resolving or following symbolic links.
Command-line Arguments Explained:

  • -x: Extracts files.
  • -v: Displays extracted files.
  • -f: Specifies the archive filename.
  • -h: Follows symbolic links only if they point to files within the archive.

Use wildcard patterns to extract files

Example Usage:
tar -xvf archive.tar --wildcards '*.txt'
What it does:
Extracts all .txt files from archive.tar using wildcard matching.
Command-line Arguments Explained:

  • -x: Extracts files.
  • -v: Displays extracted files.
  • -f: Specifies the archive filename.
  • --wildcards: Enables wildcard pattern matching.

Create an archive with absolute paths

Example Usage:
tar -cvf archive.tar -P /absolute/path/file
What it does:
Includes the full absolute path (/absolute/path/file) in the archive.
Command-line Arguments Explained:

  • -c: Creates a new archive.
  • -v: Displays progress.
  • -f: Specifies the archive filename.
  • -P: Preserves absolute paths in the archive.

Create a tarball with GNU tar-specific options

Example Usage:
tar --format=posix -cvf archive.tar file1
What it does:
Creates a tar archive using the POSIX format, ensuring compatibility with older systems.
Command-line Arguments Explained:

  • --format=posix: Uses the POSIX-standard tar format.
  • -c: Creates a new archive.
  • -v: Displays progress.
  • -f: Specifies the archive filename.
0
Subscribe to my newsletter

Read articles from Hong directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Hong
Hong

I am a developer from Malaysia. I work with PHP most of the time, recently I fell in love with Go. When I am not working, I will be ballroom dancing :-)