Skip to content
Related Articles

Related Articles

Shell Script to create a compressed archive of the specified directory

View Discussion
Improve Article
Save Article
  • Last Updated : 12 Jan, 2022
View Discussion
Improve Article
Save Article

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.


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




To create Archive




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




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




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




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




To display Verbose Information.

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



# 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

# 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_archieve 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
        echo "WARNING: Directory name doesn't exists: $1"


Successfully Archived

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!