学习内容:Linux小项目及解析
小项目:编写一段 shell 程序,实现文件的备份和恢复。
什么叫文件的备份和恢复:
数据备份就是把一个数据库里的东西,在某个时间数据库管理软件复制完全另外一个一样的。恢复是自从备份了数据库后,使用数据库的过程中发现出现了点小问题,导致数据库有些信息丢失了,并且现在的数据库中找不到这些信息了,这个时候就可以用备份的数据库来恢复下这些丢失的信息了。
代码语法基本解析:
- 一般情况下可以按Q键或者Ctrl+c;
- 第1步: ! 谈话一般在shell脚本中表示取反
- 第2步: [] 这个叫条件表达式 简易版的if
- -n 用于判断变量是否为空,注意只要有一个符号就不为空,空格也不行
- -d directory意思 用于判断目录是否存在
- 第3步:[ ! -n ] [ ! -d ] 的意思你应该懂了
- [ ! -n ] 判断变量如果不为空则条件成立
- [ ! -d ] 判断变量如果不是目录则条件成立
- -a 与;-o 或;! 非(一般出现在条件判断语句中)
- -ne 表示不等于
- if [ $? -ne 0 ]这是unix的shell编程语句,如果上一条命令执行后的结束代码不是0则执行下面的命令直到fi行之前
- exit 2 表示这个程序退出后,它的返回值是2。可以理解为这个程序死了,它的遗言是2,告诉别人自己是因为什么原因死掉的。这样法医(shell或它的父进程)就可以知道原因,来判断凶手(程序出错)是谁,从而作进一步的处理。
- tar 命令:文件压缩打包命令
命令格式如下,
打包:tar –czvf 包名 被打包的目录或文件名
解包:tar -xzvf 包名
具体代码如下:
#!/bin/sh
# backup.sh
#备份目录函数
backupdir()
{
dirtest
echo "Backupping..."
tar -zcvf /tmp/backup.tar.gz $DIRECTORY
}#恢复目录函数
restoredir()
{
dirtest
echo "Restroing..."
tar -xzvf /tmp/backup.tar.gz
}#验证目录函数
dirtest()
{
echo "Please enter the directory name of backup file:"
read DIRECTORY
if [ ! -d $DIRECTORY ]
then
echo "Sorry,$DIRECTORY is not a directory!"
exit 1
fi
cd $DIRECTORY
}
clear
ANS=Y
while [ $ANS = Y -o $ANS = y ]
do
echo "============================="
echo "= Backup-Restore Menu ="
echo "+++++++++++++++++++++++++++++"
echo "+ 1:Backup Directory +"
echo "+ 2:Restore Directory +"
echo "+ 3:Exit +"
echo "+++++++++++++++++++++++++++++"
echo "Please enter a choice(0-2):"
read CHOICE
case "$CHOICE" in
1) backupdir;;
2) restoredir;;
0) exit 1;;
*) echo "Invalid Choice!"
exit 1;;
esac
if [ $? -ne 0 ]
then
echo "Program encounter error!"
exit 2
else
echo "Operate successfully!"
fi
echo "Would you like to continue? Y/y to continue,any other key
to exit:"
read ANS
clear
done