Posted On May 30, 2020

Linux: How to Use Tar and Gunzip

kimconnect 0 comments
blog.KimConnect.com >> Linux >> Linux: How to Use Tar and Gunzip

Tar is an archival system. It helps bundling many directories and files into a single ‘tarball’. This is convenient for backup and remote transferring purposes. This app is often composed with compression plugins such as Gunzip (normal compression) or tb2 (high) to reduce the overall tarball size. This makes the output even more compact and suitable to be sent over the wire.

Here are a few usual switches:

c : create new archive
x : extract archive
t : list content (not create nor extract)
r : record or append
v : verbosely display progress
p : preserve permissions
f : file name type
z : expect compression
j : high compression often signified with the file suffix .bz2
W : verify archive (doesn't work if gzip or tbz is used)
-C : change extraction direction into a specific path

Some common usage examples:

# Compress the whole /home directory
timeStamp=$(date +"%Y-%m-%d_%H-%M-%S")
backupFile=/root/backup/"$HOSTNAME"_"$timeStamp"_backup.tar.gz
objectToBackup=/home
tar -czvpf $backupFile $objectToBackup

# Compress the whole /home directory with tb2 high compression
timeStamp=$(date +"%Y-%m-%d_%H-%M-%S")
backupFileBz2=/root/backup/"$HOSTNAME"_"$timeStamp"_backup.tar.bz2
tar -cvjf $backupFile $objectToBackup

# Extract the compressed archive to the root directory to recreate the original hierarchy
extractTo=/ # WARNING: this will overwrite files in the /home path
tar -xzvf $backupFile -C $extractTo 
tar -xzvf $backupFileBz2 -C $extractTo

# Create an uncompressed archive
timeStamp=$(date +"%Y-%m-%d_%H-%M-%S")
usersDatabaseBackup=/root/backup/"$HOSTNAME"_"$timeStamp"_users.tar
holdingDirectory="${usersDatabaseBackup%/*}"
mkdir -p $holdingDirectory && touch -f $usersDatabaseBackup # Create folder and create empty file prior to creating tarball
cd $holdingDirectory && tar -cvf $usersDatabaseBackup passwd

# Add another file into the archive (only works on uncompressed archives)
cd $holdingDirectory && tar -rvf $usersDatabaseBackup {group,shadow,gshadow}

# List contents
tar -tf $usersDatabaseBackup

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

How To Upgrade NextCloud 28 to 31 in Docker Compose

1. Upgrade in the incremental progression of one major version at a timeLogin to your…

Linux Cheat Sheet

Below is a quick reference to the most useful commands and techniques for a Linux…

Yum commands to update server

Wanna ace your Linux job interviews? Well, read more Linuxy stuff and cramp your brain…