How to backup directories in Linux

Home > Search > How-to
  by

To back up the data in our Linux OS, we will create a BASH shell script which will create .tar.bz2 files that contain the contents of the /home, /etc/, and /var directories. We can then transfer the .tar.bz2 files to a backup storage device. Move the the /etc/cron.daily directory.

[root@server1 ~]# cd /etc/cron.daily

 

Create a file named daily_backup.sh.

[root@server1 ~]# touch daily_backup.sh

 

Change the owner of the daily_backup.sh file to root:root. Also change the permissions of the backup file to 700, so only root has read / write / execute permission to the backup file.

[root@server1 ~]# chmod 0700 daily_backup.sh
[root@server1 ~]# chown root:root daily_backup.sh

 

Add the following to the daily_backup.sh file:

  • -c stands for create
  • -j stands for compress using bzip
  • -f stands for file name
#!/bin/bash
tar -cjf /tmp/`date +%Y-%m-%d-`backup.home.tar.bz2    /home
tar -cjf /tmp/`date +%Y-%m-%d-`backup.etc.tar.bz2     /etc
tar -cjf /tmp/`date +%Y-%m-%d-`backup.var.tar.bz2     /var

 

This script uses bzip to compress the tar archive. Let's install bzip.

[root@server1 ~]# yum install bzip2

 

Manually run the script to ensure the .tar.bz2 files are created.

[root@server1 ~]# bash /etc/cron.daily/daily_backup.sh

 

To see if .tar.bz2 files were created, use the ls -lh (list long human readable) command to see if there are .tar.bz2 files in the backup directory. Notice the size of the backups in this example is 6.0M, 28K, 34M.  As long as this file is greater than 0, the file contains data.  If the file is zero, something went wrong, and nothing was backed up.

ls -lh /mnt/Backup
-rw-r--r-- 1 root root 6.0M Jan 01 00:01 backup.etc.tar.bz2
-rw-r--r-- 1 root root  28K Jan 01 00:01 backup.home.tar.bz2
-rw-r--r-- 1 root root  34M Jan 01 00:01 backup.var.tar.bz2

 

Next we will want to update our BASH shell script to move these backup files to an external storage device. Let's say you have a computer with a hard drive that is dedicated as your backup storage device. You will need to share the backup storage device. If you are unsure on how to create a share, refer to these articles:

After the storage device is setup as a share, you will then want to permanently mount the share in your Linux OS. If problems occurs, try to manually connect to the shared network drive.

Let's say the external storage device is mounted at /mnt/backups on the local Linux OS. We can modify our BASH shell script to move the .tar.bz2 file to the /mnt/backups directory.

#!/bin/bash
tar -cjf /mnt/backups/`date +-%Y-%m-%d`backup.home.tar.bz2    /home
tar -cjf /mnt/backups/`date +-%Y-%m-%d`backup.etc.tar.bz2     /etc
tar -cjf /mnt/backups/`date +-%Y-%m-%d`backup.var.tar.bz2     /var

 

For reassurance that the bz2 file contains the contents of /home or /etc/ or /var, the file can be viewed using the bzcat command.

[root@server1 ~]# bzcat /mnt/backups/<date>home.tar.bz2
[root@server1 ~]# bzcat /mnt/backups/<date>etc.tar.bz2
[root@server1 ~]# bzcat /mnt/backups/<date>var.tar.bz2

 

Our next task is to automatically run the backup_example.com_compress_job script once a day, every day. In Terminal, enter the below command. Ensure you are using roots account.

[root@server1 ~]# su - root
[root@server1 ~]# whoamiroot

 

Edit the crontab file:

[root@server1 ~]# crontab -e

 

Add the following:

  • 0 3 * * * in the first line stands for 0 minutes, 3 hour, which equates to 3:00 am. In another words, the job will run at 3:00 am.
0 3 * * * bash /etc/cron.daily/daily_backup.sh

 

 



Add a Comment




We will never share your name or email with anyone. Enter your email if you would like to be notified when we respond to your comment.




Please enter in the box below so that we can be sure you are a human.




Comments