linux自动备份网站及自动上传FTP脚本的方法

linux自动备份网站及自动上传FTP脚本的方法,第1张

对于我们个人站长来说,数据的重要不用再谈,而很多站长经常忘记备份数据,也有无良的JS跑路,硬盘损坏,数据丢了,其中DS就丢失过好几次数据,如果没有备份,肯定悲剧,本文介绍一种自动备份数据的方法!

本脚本特色:

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8442216.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存