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打包,并把重要的内容记录到日志文件里

创建脚本/root/script/backup.sh

# 该脚本应用于10多台普通的Linux应用服务器,多年来从未出过差错。

# 数据库备份较为特殊,这里不包含数据库备份。

# 因为脚本中含有FTP密码,所以FTP仅给予写权限较为安全,FTP中的老备份的定期删除任务由FTP服务器完成。

# 备份加入到自动任务中,每周六23:00执行,并写入日志,如下:

# 追加下面语句到/etc/crontab中

# 0 23 * * 6 root /root/script/backup.sh >>/root/script/backup.log 2>&1

#有注释版:

#!/bin/bash

#=====================================================

#author zhaoyn

#date 2010/12/31

#=====================================================

#参数设定

basedir=/opt/backup #备份存放的目录

days=15 #备份在本地保留天数

bakfiles="/root/script /etc" #需要备份的目录或文件,请不要使用快捷方式或通配符

ftpip=XXX.XXX.XXX.XXX #异地备份的FTP地址

ftpuser='username' #异地备份的FTP用户名

ftppw='password' #异地备份的FTP密码

echo =====================================================

date

cd $basedir

#删除备份目录中15天以前备份文件,不包含子目录

find -maxdepth 1 -name "*.tgz" -mtime +"$days" -exec rm -f {} \

for bakfile in $bakfiles

do

file=`basename $bakfile`

#压缩打包需要备份的目录,包括权限,文件命名包含当前时间

tar -czpf "$file"_$(date +%Y%m%d-%H%M).tgz $bakfile

#大文件打包前后,缓解磁盘压力,降低I/O错误概率

sleep 10s syncsync

done

#通过FTP上传当天备份的文件到异地

ftp -v -n -i $ftpip <<END

user $ftpuser $ftppw

bin

mput *$(date +%Y%m%d)*.tgz

bye

END

#无注释版:

#!/bin/bash

#=====================================================

#author zhaoyn

#date 2010/12/31

#=====================================================

basedir=/opt/backup

days=15

bakfiles="/root/script /etc"

ftpip=XXX.XXX.XXX.XXX

ftpuser='username'

ftppw='password'

echo =====================================================

date

cd $basedir

find -maxdepth 1 -name "*.tgz" -mtime +"$days" -exec rm -f {} \

for bakfile in $bakfiles

do

file=`basename $bakfile`

tar -czpf "$file"_$(date +%Y%m%d-%H%M).tgz $bakfile

sleep 10s syncsync

done

ftp -v -n -i $ftpip <<END

user $ftpuser $ftppw

bin

mput *$(date +%Y%m%d)*.tgz

bye

END

Mysql的备份,如果凌晨可以停止几分钟,那么强烈建议对Mysql执行物理备份,脚本如下

#!/bin/bash

#History

#=====================================================

#When Who What

#2010/3/24 Zhaoyn Create

#

#=====================================================

basedir=/opt/backup

updir=$basedir/updir

timenow=$(date +%Y%m%d-%H%M)

# 删除mysql十四天前的数据,注意,这里仅删除了mysql的tgz文件。

rm -f `find $basedir -name "mysql*.tgz" -mtime +14`

# 由于数据库在有连接的情况下,直接对数据文件打包是可能出问题的,所以这里我们在打包前要停用数据库,这样直接对数据文件打包,恢复时只需解压数据文件到新环境相应的目录即可,默认是/var/lib/mysql

# 如果白天也要进行数据库备份,请使用mysqldump命令,进行在线备份。恢复也挺方便的。

/etc/rc.d/init.d/mysqld stop

sleep 5s syncsync

tar -czpf $basedir/mysql.$timenow.tgz /var/lib/mysql

/etc/rc.d/init.d/mysqld start

#=====================================================

附件中的脚本文件是有DOS换行符(CR/LF)的,复制文件中的内容到SSH客户端没有问题,如果直接拷贝文件到Linux系统中,可先运行下面的命令:

mv *.txt *sh

dos2unix *.sh


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存