≡ Menu

Shell script to backup directories & files from your home directory and email them as .tar.gz file

# mybackup - Backup selected files & directories and email them as .tar.gz file to
# your email account.
# List of BACKUP files/dirs stored in file ~/.mybackup
# Usage   : ./mybackup
# Notes   : Very handy tool to take backup (nowdays we have 1 gig+ email a/c)
# Copyright (C) 2004 nixCraft project
# Email/Contact   : http://cyberciti.biz/fb/
# Date            : Aug-2004
# Last updated    : Aug-2005
# -------------------------------------------------------------------------
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
NOW=`date +"%d-%m-%Y"`
OUT="`echo $USER.$HOSTNAME`.$NOW.tar.gz"
TAR=`which tar`
# mail setup
MSUB="Backup (`echo $USER @ $HOSTNAME`) as on `date`"
# make sure we put backup in our own tmp and not in /tmp
[ ! -d ~/tmp ] && mkdir ~/tmp || :
if [ -f $FILE ]; then
	IN="`cat $FILE | grep -E -v "^#"`"
	echo "File $FILE does not exists"
	exit 3
if [ "$IN" == "" ]; then
	echo "$FILE is empty, please add list of files/directories to backup"
	echo "Use mybackupadd script"
	 exit 2
$TAR -zcf ~/tmp/$OUT $IN >/dev/null
# create message for mail
echo "Backup successfully done. Please see attached file." > $MES
echo "" >> $MES
echo "Backup file: $OUT" >> $MES
echo "" >> $MES
# bug fix, we can't send email with attachment if mutt is not installed
which mutt > /dev/null
if [ $? -eq 0 ]; then
	# now mail backup file with this attachment
	mutt -s "$MSUB" -a "$MATT" $MTO < $MES
	echo "Command mutt not found, cannot send an email with attachment"
# clean up
/bin/rm -f $MATT
/bin/rm -f $MES

Comments on this entry are closed.

  • Boris C.

    Hi, i am not experienced in this, but i would like to know where to find help files on this script.

  • Marcelo Saied

    nice script

  • vamsi

    thanks :D
    its very useful ;)

  • abhishek

    what does this line will do. I too new for scripting :

    IN=”`cat $FILE | grep -E -v “^#”`”