Last updated on May 25th, 2018 at 08:54 pm
Backup Files and Directories in Linux
This tutorial is related to Backup Files and Directories in Linux using tar and cron jobs. Almost every Linux Admin use this utility (for backing up their critical data) which is something call tar, tar allows you easily and quickly backup your files folder or your entire system.
Advance Linux Topics: Apache High-Availability Cluster on CentOS 7.x Using Pacemaker
In this guide I am going to show you how to use tar for Backup Files and Directories in Linux or your whole system at the end You will learn also how to schedule backup task using cron job.
Also read other articles related to Linux Backup
- Incremental Backup in Linux Using tar utility
- Guide to Setup Crontab with Example
- Email Notification Upon Success or Failure of Backup Script
- Delete Files Older than X Number of Days in Linux
- How to Transfer Files to a Remote FTP Server With Bash Script
Cron jobs allow you to schedule your tasks and run automatically.
So you will learn first, how to backup important data and then how to run backup task automatic using bash script and cron jobs.
Backup Using TAR
Backing up your files using tar is very simple using following command.
# tar -cvpzf /BackupDirectory/backupfilename.tar.gz /ImportantData/directory/path
Lets take a real world example, suppose I have directory called /imp-data on root and i want to make backup of this directory including sub directories on different location like in /mybackupfolder.
In above example my command will be.
# tar -cvpzf /mybackupfolder/backup.tar.gz /imp-data
[[email protected] /]# tar -cvpzf /mybackupfolder/backup.tar.gz /imp-data tar: Removing leading /* from member names /imp-data/ /imp-data/hafiz-haider-docs.txt /imp-data/linux-commands.txt [[email protected] /]
- tar = Tape archive
- c = Create
- v = Verbose mode
- p = Preserving files and directory permissions.
- z = This will tell tar that compress the files further to reduce the size of tar file.
- f = It allows tar to get file name.
Now Let’s add tar command in bash script to make this whole backup process automatic.
Here i will show you my self-created simple bash script that i am using for backing up my important data. To make this script automatic and run in background we will use cron job
Here is my Super Simple Backup Script :)
Create file using vi editor and paste below script.
# vi /backup.sh
Paste Below Script in backup.sh file
#!/bin/bash #Purpose = Backup of Important Data #Created on 17-1-2012 #Author = Hafiz Haider #Version 1.0 #START TIME=`date +%b-%d-%y` # This Command will add date in Backup File Name. FILENAME=backup-$TIME.tar.gz # Here i define Backup file name format. SRCDIR=/imp-data # Location of Important Data Directory (Source of backup). DESDIR=/mybackupfolder # Destination of backup file. tar -cpzf $DESDIR/$FILENAME $SRCDIR #END
This Script will make backup of /imp-data directory and save it into a single compressed file on /mybackupfolder Directory.
Now create above mentioned directories
# mkdir /imp-data
# mkdir /mybackupfolder
Automation of Backup Process:
Now i will show you how to schedule our backup process. In Linux we use cron jobs in order to schedule task.
For setting up cron jobs we use crontab -e command in shell, this command basically says we are going to edit our cron jobs file. If you run first time crontab -e command then it will ask you to default text editor, you just select your favorite editor after that it will never ask you again.
Don’t Miss: How to Setup Linux Crontab with Examples
Open cronab editor utility:
# crontab -e
It has 6 parts see below explanation:
Minutes Hours Day of Month Month Day of Week Command 0 to 59 0 to 23 1 to 31 1 to 12 0 to 6 Shell Command
Keeping above examples in mind now let’s suppose i want to run this backup process on every Mon and Sat at 1:pm.
in above condition my crontab file should be like this.
#M H DOM M DOW CMND 01 13 * * 1,6 /bin/bash /backup.sh
This Script will run at 01:01:00 at every Monday and Saturday.
leave comments if you need any help or contact me directly on [email protected]