View Full Version : Shell Script backup a file HELP
anything
2nd February 2008, 20:51
could you please find a solution for this
script that backup a file. The file name to backup should be provided as input parameter, the backup file should have the same file name with the extension ".bak". If the user provides no input parameter, the script should display an error message. If there is an input file name, but it does not exist, the script should display an error message. If the input file exists, the script should create the backup file and overwrite any existing backup file with the same name.
topdog
3rd February 2008, 15:50
#!/bin/bash
#
# Andrew <andrew@topdog.za.net>
# Quick dirty script to backup a file
# 03-02-2008
#
if [[ "$1" = "" || "$1" = "--help" ]]; then
echo " Usage: $0 <file to backup>"
echo ""
exit 1
fi
if [ ! -r $1 ]; then
echo "The file $1 does not exist"
echo ""
exit 1
fi
#work around for systems with cp -i alias
aliased=0
j=$(alias | grep cp &>/dev/null)
if [ "$?" = "0" ]; then
i=$(alias cp | grep '\-i' &>/dev/null)
if [ "$?" = "0" ]; then
aliased=1
unalias cp
fi
fi
# actual copy
cp -a $1 $1.bak
if [ $aliased = "1" ]; then
alias cp='cp -i'
fi
anything
4th February 2008, 17:04
thank you, but can you add a massage inform that the backup is successfully created, when it do. and please could you give me a little explanation of it, I am really beginner on it. I need to understand the code.
thanks
topdog
4th February 2008, 17:48
thank you, but can you add a massage inform that the backup is successfully created, when it do. and please could you give me a little explanation of it, I am really beginner on it. I need to understand the code.
thanks
Comments are inline
#!/bin/bash
#
# Andrew <andrew@topdog.za.net>
# Quick dirty script to backup a file
# 03-02-2008
#
#check if any option was passed or --help
if [[ "$1" = "" || "$1" = "--help" ]]; then
echo " Usage: $0 <file to backup>"
echo ""
exit 1
fi
#check if file exists
if [ ! -r $1 ]; then
echo "The file $1 does not exist"
echo ""
exit 1
fi
#work around for systems with cp -i alias
aliased=0
j=$(alias | grep cp &>/dev/null)
if [ "$?" = "0" ]; then
i=$(alias cp | grep '\-i' &>/dev/null)
if [ "$?" = "0" ]; then
aliased=1
unalias cp
fi
fi
# actual copy
cp -a $1 $1.bak
if [ "$?" = "0" ]; then
echo "The file $1 has been backed up !"
fi
#set alias back
if [ $aliased = "1" ]; then
alias cp='cp -i'
fi
anything
5th February 2008, 19:09
thank you very mush, it was very helpful
can you see this topic, just this
http://www.howtoforge.com/forums/showthread.php?t=20115
vBulletin® v3.8.4, Copyright ©2000-2009, Jelsoft Enterprises Ltd.