当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : (实用)一个交互式备份、恢复目录的脚本,管理员可参考·
帖子发表于 : 2007-12-11 22:05 

注册: 2007-10-23 19:45
帖子: 12
送出感谢: 0 次
接收感谢: 0 次
代码:
#!/bin/bash
#备份文件的一个脚本,按1、2、3自动进行备份
#可实现全部备份,只备份修改过或增加过的文件
#可以实现有选择的恢复
#如果大家能用的着,只要修改一下里面相关的参数就可以了
echo "####################################################"
echo "#           press 1 to bakup all file              #"
echo "#                                                  #"
echo "#           press 2 to bakup change file           #"
echo "#                                                  #"
echo "#           press 3 to recovery all file           #"
echo "#                                                  #"
echo "####################################################"
echo "press key1 key2 or key3:"
read key
#检查输入的是不是 数字1 、2或者3;不是的话就要重新输入
until [ $key -eq 1 ] || [ $key -eq 2 ] || [ $key -eq 3 ];do
   echo "press key1 key2 or key3! "
   read key_ag
   key=$key_ag
done
#定义脚本退出状态变量
WORNG_INPUT=5
WORNG_DIR=4
#定义全部备份的函数
bakall ()
{   
#检查所要备份的目录是否是一个目录   
   if [ ! -d /home/$USER ];then
      echo "/home/$USER is not a dir or donot exsit"
      exit $WORNG_DIR
   fi
#如果存放备份文件的目录里没有以今天为日期的tarball,就进行备份,否则退出。
   if [ ! -e /home/tmp`date +%m-%d`.tar ];then
      echo "This is first to bakup /home/$USER!"
      tar -cvf /home/tmp`date +%m-%d`.tar /home/$USER
   else   
      echo "today alreaday bakup all file!"
   fi
#在/tmp目录下生成临时文件,这个文件的修改日期就是下次进行增量备份时所查找文件的日期。
[ -e /tmp/time ] || touch /tmp/time
echo "`date +%m-%d`" >/tmp/time
exit 0
}

#定义增量备份函数
bakupdate ()
{
#检查所要备份的目录是否是一个目录
   if [ ! -d /home/$USER ];then
      echo "/home/$USER is not a dir or donot exist"
      exit $WORNG_DIR
   fi
#检查存放备份文件的目录,如果有今天为日期的增量备份文件就打印消息,函数结束。
   if [ -e /home/tmp`date +%m-%d`update.tar ];then
      echo "today alreaday bakupdate!"
   else
      if [ ! -e /home/tmp*.tar ];then #如果存放备份文件的目录没有任何tarball,调用全部备份的函数
         echo "This is first time to bakupdate!"
         bakall
      else                            #备份原目录里有更新的文件
         echo "progrem will bakup changed file"
         find /home/$USER -newer /tmp/time -exec tar -cvf /home/tmp`date +%m-%d`update.tar {} \;
         echo "`date +%m-%d`" > /tmp/time
      fi
   fi

exit 0
}
#定义恢复函数,这个函数我就不说明了吧·~很简单 自己看了
forward ()
{
   ls -lh /home | grep ".*tar$"
   echo "slect which tarball will recover"
   echo 'input file name as this sample : tmp???update.tar'
   read TARBALL
   until [ -e /home/$TARBALL ];do
      echo "input file is not exsit! please input again:"
      read TARBALL_ag
      TARBALL=$TARBALL_ag
   done
   tar -xvf /home/$TARBALL -C /home
   echo " recover done!"
      
exit 0

}
#执行case语句,根据所选的选项调用不同的函数
case "$key" in

   1) bakall
   ;;
   2) bakupdate
   ;;
   3) forward
   ;;
   *) exit $WORNG_INPUT 
   ;;

esac

原代码就是这样了,需要的可根据自己的需求进行更改~


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-12-11 22:06 

注册: 2007-10-23 19:45
帖子: 12
送出感谢: 0 次
接收感谢: 0 次
原创的 啊~~大家别光看不回帖啊~来好拍个砖都行啊·


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-12-29 19:48 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
很好,很强大,说些外行话,lz echo出来的有些英语似乎有语法错误呢,另外,使用一下压缩应该会更好些吧。不知道更新备份直接用 tar -uvf [file.tar] [file]行不行呢?
我是个外行,只能挑些鸡毛蒜皮的问题了,见笑了。 :em08


_________________
Joolix live OS: http://joolix.com
代码:
dpkg -l|awk '/^rc/{print $2}'|sudo xargs dpkg -P


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-12-30 16:18 

注册: 2007-06-29 20:19
帖子: 112
送出感谢: 0 次
接收感谢: 1
不错!学习学习!


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-01-14 23:49 

注册: 2007-11-12 20:41
帖子: 75
送出感谢: 0 次
接收感谢: 0 次
我是门外汉,请问这个备份全部所包含的路径,以及会进入备份死循环吗?
因为我只是想使用,不懂太多shell脚本,请楼主解释一下


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-01-15 0:00 

注册: 2007-11-27 22:20
帖子: 444
送出感谢: 0 次
接收感谢: 0 次
来学习一下。


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-04-30 12:20 

注册: 2008-04-18 17:06
帖子: 101
送出感谢: 0 次
接收感谢: 0 次
有谁用过没有,怎么样啊?
只是面向管理员的么?
个人用户呢?
解释一下吧,菜鸟比较多,不是都能看懂的……


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译