
本脚本特色:
1.纯zip压缩,1-9可自行调整压缩率
2.整台VPS备份,还原方便,非常适合站群
3.加入压缩密码,可以自己设置
4.加入绑米信息伪静态压缩,防止伪静态弄丢
5.请确保在home目录下有backup目录,如果没有请执行
mkdir
/home/backup
6.还原数据库请参考:导入数据库方法
最后更新时间:2012年8月25日
centos安装zip
yum
install
zip
debian安装zip
apt-get
install
zip
下载编辑
wget
-c
http://www.***.com/soft/beifen.sh
vi
beifen.sh
只编辑注解为需要修改的地方
【脚本开始】
#!/bin/bash
#下面的参数是你要修改的
MYSQL_USER=root
#mysql用户名
MYSQL_PASS=mysql密码
#mysql密码
FTP_USER=FTP用户名
#ftp用户名
FTP_PASS=FTP密码
#ftp密码
FTP_IP=FTP地址
#ftp地址
FTP_backup=FTP目录
#ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/home/wwwroot/
#要备份的网站数据
WEB_BANGMI=/usr/local/nginx/conf/
#要备份的绑米信息
WEB_MULU=/home/backup
#备份文件存放目录
WEB_MIMA=zhujima
#备份时候的密码
WEB_YASUOLV=1
#压缩率
1-9
如果VPS没有zip,请安装zip
#上面是你要修改的地方
#删除淘宝客缓存,属于自定义设置。可自行 *** 作
#rm
-rf
/home/wwwroot/1.com/Apicache/*
#定义数据库的名字和旧数据库的名字
DataBakName=Data_$(date
+"%Y%m%d").zip
#定义数据库名字
WebBakName=Web_$(date
+%Y%m%d).zip
#定义备份网站名字
BANGMI=BANGMI_$(date
+%Y%m%d).zip
#定义绑米备份名字
OldData=Data_$(date
-d
-5day
+"%Y%m%d").zip
#定义5天前数据库名字
OldWeb=Web_$(date
-d
-5day
+"%Y%m%d").zip
#定义5天前网站名字
BANGMIshan=BANGMI_$(date
-d
-5day
+"%Y%m%d").zip
#定义5天前绑米名字
#删除本地3天前的数据
rm
-rf
$WEB_MULU/Data_$(date
-d
-3day
+"%Y%m%d").zip
$WEB_MULU/Web_$(date
-d
-3day
+"%Y%m%d").zip
$WEB_MULU/BANGMI_$(date
-d
-3day
+"%Y%m%d").zip
#导出全部数据库
cd
$WEB_MULU
/usr/local/mysql/bin/mysqldump
-u$MYSQL_USER
-p$MYSQL_PASS
--all-databases
>
$(date
+"%Y%m%d").sql
#压缩数据库文件为一个文件
zip
-r
-$WEB_YASUOLV
-P
$WEB_MIMA
$DataBakName
$WEB_MULU/*.sql
rm
-rf
$WEB_MULU/*.sql
#压缩网站数据
cd
$WEB_DATA
zip
-r
-$WEB_YASUOLV
-P
$WEB_MIMA
$WebBakName
./*
mv
$WebBakName
$WEB_MULU/$WebBakName
cd
$WEB_MULU
#压缩绑米信息
cd
$WEB_BANGMI
#进入绑米目录
zip
-r
-$WEB_YASUOLV
-P
$WEB_MIMA
$BANGMI
./*
mv
$BANGMI
$WEB_MULU/$BANGMI
#上传到FTP空间,删除FTP空间5天前的数据
cd
$WEB_MULU
#进入备份目录
ftp
-v
-n
$FTP_IP
<<
END
user
$FTP_USER
$FTP_PASS
type
binary
cd
$FTP_backup
delete
$BANGMIshan
delete
$OldData
delete
$OldWeb
put
$DataBakName
put
$WebBakName
put
$BANGMI
bye
END
加入权限,写入定时执行
chmod
777
/root/beifen.sh
crontab
-e
30
21
*
*
*
/root/beifen.sh
注:每天21:30开始备份并且上传FTP
本文地址:http://www.zhujima.com/139.html
#!/bin/bash#设置日志文件,前提建好了/backup/log目录
LogFile=/backup/log/`date +"%Y-%m"`.log
#备份源目录
SourceDir=/cvs
#备份目标
BakDir=/backup
#保存20天过期自动删除
RetainDay=20
#备份的内容可以写进project.lst,如cvs目录下有a,b,c三个目录,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=$SourceDir/$Project
DestDir=$BakDir/$Project
PackFile=$DATE.$Project.tgz
if [ -f $BakDir/$PackFile ]
then
echo "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 <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 * * 6 /home/backup.sh
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)