首页 > 代码库 > Linux自动备份脚本--解析
Linux自动备份脚本--解析
由于上次做项目的时候,客户要求需要对系统状态做自动备份,当时觉得自己写得脚本实在是不够上档次,就开始在网上搜索各种比较好的脚本,现在找到了一个还挺不错的脚本,与大家一起来解析分享一下。其实我第一遍看的时候中间有一小部分没有弄懂,觉得里面的语法真的是用的恰到好处,不过还是稍稍修改了一点。
#说明使用的是bash语法来写脚本 #!/bin/bash #设置日志文件,前提建好了/backup/log目录 LogFile=/backup/log/`date +"%Y-%m"`.log #备份源目录,这时我们可以写成是“根目录”,因为系统状态一定是保存在根目录下的。 #从网上查资料得知,一般备份系统状态都会备份/etc,/var,/root,/home,/opt,其他的目录都是与系统状态不大重要的 SourceDir=/ #备份目标 BakDir=/backup #保存20天过期自动删除 RetainDay=20 #备份的内容可以写进project.lst,project.lst填写备份目录,下面是备份的 #具体脚本,其核心是tar打包,并把重要的内容记录到日志文件里 ProjectLst=/backup/project.lst ################################################## DATE=`date +"%Y-%m-%d"` echo "backup start at $(date +"%Y-%m-%d %H:%M:%S")" >$LogFile echo "--------------------------------------------------" >>$LogFile cd $BakDir PROJECTLIST=`cat $ProjectLst` for Project in $PROJECTLIST do ProjectData=http://www.mamicode.com/$SourceDir/$Project"backup file have exist !" >>$LogFile
else cp -RHpf $ProjectData $DestDir >/dev/null tar -zcvf $PackFile $Project >/dev/null echo "backup $Project done into $PackFile" >>$LogFile rm -rf $Project fi done echo "--------------------------------------------------" >>$LogFile echo "backup end at $(date +"%Y-%m-%d %H:%M:%S")" >>$LogFile echo " " >> $LogFile ################################################## #下面的内容就是把刚才备份的内容传到服务器上,前提是你有一个可以访问到底FTP服务器 #put backup to ftp server HOST=192.168.110.111 FTP_USERNAME=ftpuser FTP_PASSWORD=123456 cd $BakDir echo "start open ftp serverat $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile echo "--------------------------------------------------" >>$LogFile /usr/bin/ftp -in <<EOF open $HOST user $FTP_USERNAME $FTP_PASSWORD put $DATE.$Project.tgz bye EOF echo "put ftp end at $(date +"%Y-%m-%d %H:%M:%S")" >>$LogFile #最后上传完毕后再查看本地备份大于20天的自动删除,这样就可以实现本地异地双备份 find $Bakdir -type f -mtime +$RetainDay -name "*.$Project.tgz" -exec rm {} \; >/dev/null exit 0 #最后我们还可用crontab做个周期性计划,比如每周一次全备份 #59 23 * * * /home/backup.sh
解释几个语法性的问题:
关于if [-f $1]
本文出自 “刘琼@天道酬勤” 博客,请务必保留此出处http://lqiong.blog.51cto.com/8170814/1542483
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。