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.
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.
#!/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 displaed # 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_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 else echo "WARNING: Directory name doesn't exists: $1" fi