备份VPS数据用的脚本,昨天不小心弄丢了点数据,导致重新安装了VPS,浪费一下午时间。

代码来自网络,备份的比较齐全,网站文件夹,php/mysql/nginx/ssh的配置文件,还有crontab任务列表也备份了,执行脚本后最后会生成一个tar.gz文件,按当天日期命名。

生成的文件应该不会小,所以发送到邮箱不合适,可以上传到FTP,相关代码网上很多,我自己没安装ftp,所以是两台VPS备份后,互相下载。

保存下面代码,或者从这下载脚本

给脚本添加权限

chmod +x backup.sh

用crontab实现每天0点自动备份,crontab -e

00 00 * * * /home/backup.sh

#!/bin/bash<br />
#需要修改的地方从这里开始<br />
WEB_DATA=/home/wwwroot                          #要备份的网站数据<br />
nginx_DATA=/usr/local/nginx/conf                #要备份的NGINX配置文件<br />
PHP_Config=/usr/local/php/etc                   #要备份的PHP配置文件<br />
Ftp=/usr/local/pureftpd                         #要备份的PURE-FTPD<br />
Folder=/home/bak                                #备份文件的存放文件夹<br />
Config=/etc/init.d/                             #要备份的服务文件<br />
ppp=/etc/ppp                                    #要备份的PPP(pptp)账号数据<br />
date=$(date +"%Y%m%d")                          #今日时间<br />
MYSQL_UserName=root                             #mysql账号<br />
MYSQL_PassWord=password                         #mysql密码<br />
DB_Name1=test1                                  #数据库1<br />
DB_Name2=test2                                  #数据库2<br />
DB_Name3=test3                                  #数据库3<br />
DB_Name4=test4                                  #数据库4 默认是四个数据库,按自己情况增加减少<br />
#需要修改的地方从这里结束<br />
 <br />
#手动备份删除今日数据<br />
rm -fr /$Folder/$date.tar.gz   <br />
 <br />
#删除3天前的数据<br />
rm -fr /$Folder/$(date -d -3day +"%Y%m%d").tar.gz   <br />
 <br />
#创建今天的备份目录<br />
mkdir -p /$Folder/$date                              <br />
 <br />
#压缩网站数据<br />
cd $WEB_DATA<br />
tar zcf /$Folder/$date/web.tar.gz ./*           <br />
 <br />
#备份并压缩Mysql数据库<br />
 <br />
/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $DB_Name1 > /$Folder/$date/$DB_Name1-$(date +"%Y%m%d").sql<br />
/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $DB_Name2 > /$Folder/$date/$DB_Name2-$(date +"%Y%m%d").sql<br />
/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $DB_Name3 > /$Folder/$date/$DB_Name3-$(date +"%Y%m%d").sql<br />
/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $DB_Name4 > /$Folder/$date/$DB_Name4-$(date +"%Y%m%d").sql<br />
 <br />
cd $Folder<br />
tar zcf /$Folder/$date/database-$(date +"%Y%m%d").tar.gz ./$date/*.sql<br />
 <br />
#备份NGINX配置文件<br />
cd $nginx_DATA<br />
tar zcf /$Folder/$date/nginx.tar.gz ./*<br />
 <br />
#备份PHP配置文件<br />
cd $PHP_Config<br />
tar zcf /$Folder/$date/php.tar.gz ./*<br />
 <br />
#压缩FTP Server文件<br />
cd $Ftp<br />
tar zcf /$Folder/$date/ftp.tar.gz ./*<br />
 <br />
#压缩服务文件<br />
cd $Config<br />
tar zcf /$Folder/$date/d.tar.gz ./nginx ./mysql ./php-fpm ./ftpd<br />
 <br />
#打包PPP配置以及PPTP拨号帐号<br />
cd $ppp<br />
tar zcf /$Folder/$date/ppp.tar.gz ./*<br />
 <br />
#备份SSHD配置文件<br />
cp /etc/ssh/sshd_config /$Folder/$date<br />
 <br />
#备份crontab内容<br />
crontab -l > /$Folder/$date/crontab_$date.txt<br />
 <br />
#压缩当天数据<br />
cd /$Folder/<br />
tar zcf /$Folder/$date.tar.gz ./$date/*<br />
 <br />
#删除当天备份文件夹<br />
rm -fr /$Folder/$date



转自:http://014.cc/backup