Shell Script to create a compressed archive of the specified directory
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
Share your thoughts in the comments
Please Login to comment...