Open In App

Shell Script to create a compressed archive of the specified directory

Improve
Improve
Like Article
Like
Save
Share
Report

An archive is a simple process of storing a group of files or folders into one file. Sometimes we may need to create a compressed archive out of a single folder so that we can share it with others or for something else. In Linux, to ease the task, we can create a shell script to automate the process of creating an archive by simply providing the folder name only.

Using tar command:

Tar is an acronym for Tape Archive. It was initially created in January 1979 at AT&T Bell Laboratories by John Gilmore. The main purpose of creating a tar utility is to efficiently create one archive from many files. The tar command creates a single archive from many files. This newly created archive is also called a tarball. tar can be used to extract the archive also.

Syntax:

tar [option] [archive-filename] [file-or-folder-to-be-archived]

Here are some of the most used options:

Sr. no. Options (short forms) Options (expanded forms) Description

1.

-c

–create

To create Archive

2.

-x

–extract

 To extract one or more file(s) from the archive

3.

-f

–file=archive-name

To create an archive with a given filename/archive-name

4.

-t

–list

To list the names of all the files in the archive.

5.

-u

–update

To update the file in archives and add files to the end of the archive.

6.

-v

–verbose

To display Verbose Information.

Note: Here, archive-name should be replaced by the name that you want to give to the archive.

Code:

#!/bin/bash

# Here we are checking if the directory name
# is provided in the argument or not.
# -z will check for the null string 
# and $1 will check if the positional argument
# is passed or not
if [ -z "$1" ]; then
  
  # If the name of the folder was not specified 
  # in the argument 
  # Then the following message will be displayed 
  # to the screen 
  echo "Warning : Please provide the folder name as an argument"
  exit 0
fi

# We need to verify whether the directory name 
# entered by user really exists or not 
# -d flag will be true if the directory name 
# exists
if [ -d "$1" ]; then

    # if directory control will enter
    # creating a variable  filename to hold the 
    # new file name i.e. new_archive current date 
    # it will end with the extension ".tar.bz2".
    filename="new_archive $(date '+%d-%m-%y').tar"
    
    # Using tar --create option to create the
    # archive and --file to set the new filename
    tar --create --file="$filename" "$1"
    echo "Archive successfully created."
    
    # if the folder name does not exists 
    # we will simply display the following message 
    # to the screen
    else
        echo "WARNING: Directory name doesn't exists: $1"
  
fi

Output:

Successfully Archived


Last Updated : 24 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads