VPS定时自动备份终极指南

近几个月,依次遗失5个网址数据信息和网站模板程序流程,大多数是因为VPS硬盘损坏导致,RAID10为了更好地速率是很不商业保险的。近期的2次分别是DirectSpace和BuyVM,因此,必不可少备份数据,做好VPS随时随地提前准备遗失数据信息的提前准备。

 

昨日花了一整天,把现阶段全部的站干了每日同歩,下列共享给大伙儿操作过程方式。在网上有关rsync的材料也许多,但大部分我觉得会把你看看晕的,下列我就用案例来解读,关键的地区我能详细描述,期待让大伙儿都是会用。

 

下列,假定网址所属的VPS为A,存储备份的VPS为B,系统软件均为CentOS。

 

备份数据方式为 B 按时向 A 拉数据信息来备份数据

 

一、VPS A 上边的实际布署

 

1. 安裝 rsync

 

yum -y install rsync

把rsync添加开机运行

echo ‘rsync –daemon’ >> /etc/rc.d/rc.local

 

2. 设定rsync登陆密码

 

echo ‘你的登录名:你的登陆密码’ > /etc/rsyncd.scrt

chmod 600 /etc/rsyncd.scrt

这儿的账户密码,在VPS B上把会使用

 

3. 配备rsync

 

vim /etc/rsyncd.conf

放进以下几点, #后边就是我的注解

免费下载:rsyncd.conf

uid = root

gid = root

use chroot = no

read only = yes

max connections = 10

port = 873

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

#log file = /var/log/rsync.log # 偶不愿纪录log

log format = %t %a %m %f %b

syslog facility = local3

timeout = 300

[www]

path = /var/www/

comment = AAA.com

ignore errors

read only = yes

list = no

auth users = andy

secrets file = /etc/rsyncd.scrt

#exclude = AAA.com/blog/cache/ #不用备份数据的文件目录,我应用exclude from方式来清除

exclude from = /etc/rsync_exclude.txt

hosts allow = 备份数据网络服务器的IP

hosts deny = *

 

4. 清除不备份数据的文件目录

 

vim /etc/rsync_exclude.txt

键入不备份数据的文件目录,每排一个,不能用相对路径,而务必用上边环境变量中path的绝对路径,如

AAA.com/blog/cache/

AAA.com/manual/

 

这一清除文档有更高等级的 -书写,大家不用,简易足够就行,用 exclude from 方式,益处取决于随时随地要加上不用备份数据的信息时,便捷加上,且不用重新启动rsync过程

 

5. 制做一个重新启动rsync的脚本制作

 

vim /root/rsyncd_restart.sh

放进以下几点

kill -9 `cat /var/run/rsyncd.pid`

rm -f /var/run/rsyncd.pid

rm -f /var/run/rsyncd.lock

rsync –daemon

chmod 600 /root/rsyncd_restart.sh

chmod x /root/rsyncd_restart.sh

如今立即用 /root/rsyncd_restart.sh 来重启 rsync 过程

 

6. 备份数据 MySQL 的脚本制作

 

此脚本可与此同时备份数据好几个数据库查询,并开展gzip压缩,按日期文件目录储存,3天以前的备份数据将被全自动删掉

vim /root/mysql_backup.sh

免费下载: mysql_backup.sh

#!/bin/bash

# 下列配备信息内容请自身改动

mysql_user=”USER” #MySQL备份数据客户

mysql_password=”PASSWORD” #MySQL备份数据客户的登陆密码

mysql_host=”localhost”

mysql_port=”3306″

mysql_charset=”utf8″ #MySQL编号

backup_db_arr=(“db1” “db2″) #要备份数据的数据库查询名字,好几个用空格符分离分隔 如(”db1” “db2” “db3″)

backup_location=/var/www/mysql #备份资料储放部位,结尾请不要带“/”,该项可以维持默认设置,程序流程会全自动创建文件夹

expire_backup_delete=”ON” #是不是打开到期备份数据删掉 ON为打开 OFF为关掉

expire_days=3 #到期時间日数 默认设置为三天,该项仅有在expire_backup_delete打开时合理

# 行内逐渐下列不用改动

backup_time=`date %Y%m%d%H%M` #界定备份数据详尽時间

backup_Ymd=`date %Y-%m-%d` #界定备份数据文件目录中的年月日時间

backup_3ago=`date -d ‘3 days ago’ %Y-%m-%d` #3天以前的日期

backup_dir=$backup_location/$backup_Ymd #备份数据夹全途径

welcome_msg=”Welcome to use MySQL backup tools!” #欢迎标语

# 分辨MYSQL是不是运行,mysql沒有运行则备份数据撤出

mysql_ps=`ps -ef |grep mysql |wc -l`

mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`

if [[$mysql_ps == 0] -o [$mysql_listen == 0]]; then

echo “ERROR:MySQL is not running! backup stop!”

exit

else

echo $welcome_msg

fi

# 联接到mysql数据库,无法连接则备份数据撤出

mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password <

use mysql;

select host,user from user where user=’root’ and host=’localhost’;

exit

end

flag=`echo $?`

if [ $flag != “0”]; then

echo “ERROR:Can’t connect mysql server! backup stop!”

exit

else

echo “MySQL connect ok! Please wait.。。。。。”

# 分辨是否有界定备份数据的数据库查询,假如界定则逐渐备份数据,不然撤出备份数据

if [“backup_db_arr”!= “” ]then

#dbnames=$(cut -d ‘,’ -f1-5 $backup_database)

#echo “arr is (${backup_db_arr[@]})”

for dbname in ${backup_db_arr[@]}

do

echo “database $dbname backup start.。。”

`mkdir -p $backup_dir`

`mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $dbname –default-character-set=$mysql_charset | gzip 》 $backup_dir/$dbname-$backup_time.sql.gz`

flag=`echo $?`

if [ $flag == “0”];then

echo “database $dbname success backup to $backup_dir/$dbname-$backup_time.sql.gz”

else

echo “database $dbname backup fail!”

fi

done

else

echo “ERROR:No database to backup! backup stop”

exit

fi

# 假如打开了删掉到期备份数据,则开展删掉实际操作

if [“$expire_backup_delete” == “ON” -a “$backup_location”!= “” ]then

`find $backup_location/ -type d -o -type f -ctime $expire_days -exec rm -rf {} ;`

echo “Expired backup data delete complete!”

fi

echo “All database backup success! Think you!”

exit

fi

chmod 600 /root/mysql_backup.sh

chmod x /root/mysql_backup.sh

好啦,添加 crontab 每日00:00按时一键备份

00 00 * * * /root/mysql_backup.sh

 

至此,网址所属VPS A上的布署早已都完成了!下面在备份数据VPS B上开展设定来拉备份数据。

 

二、VPS B 上边的实际布署

 

1. 安裝 rsync

 

yum -y install rsync

这儿不用添加开机运行了,由于是手机客户端,并不是服务器端

 

2. 设定rsync登陆密码

 

echo ‘你在A上放置的登陆密码’> /etc/rsync.pass

chmod 400 /etc/rsync.pass

 

3. 测试一下同歩

 

先建个存储备份的地区

mkdir -p /var/rsync/

测试一下同歩

rsync -avzP –delete –password-file=/etc/rsync.pass [email protected]/* */::www /var/rsync/AAA.com/

这条指令,我表明一下好多个关键点

-avzP是什么,自身检索我网站内部详细介绍

–delete 是为了更好地例如A上删除了一个文档,同歩的情况下,B会自行删掉那一个文档

–password-file 刚刚VPS B中 /etc/rsync.pass 设定那一个登陆密码,要和VPS A的 /etc/rsyncd.scrt 中的密码一样,那样cron运作的情况下,就不用登陆密码了

这条指令中的“登录名”为VPS A的 /etc/rsyncd.scrt 中的用户名

这条指令中的 192.168.0.100 为VPS A的IP地址

::www,留意是2个 : 号,www为VPS A的环境变量 /etc/rsyncd.conf 中的[www],意思是依据A上的/etc/rsyncd.conf来同歩在其中的[www]段內容,一个 : 号的情况下,用以不依据环境变量,立即同歩特定文件目录

 

4. 添加crontab每日00:30同歩

 

30 00 * * * rsync -avzP –delete –password-file=/etc/rsync.pass [email protected]/* */::www /var/rsync/AAA.com/ > /dev/null 2>&1

 

OK!至此做好了!不害怕丢数据信息了,每天一键备份!

 

假如还需要再保险一点,加上个VPS C。

 

C来同歩B,双向备份数据,哪一个挂掉都不害怕!

 

本文由网友投稿或「聚码源码网」整理自网络,如转载请注明出处:http://www.jumaniu.com/951/

本站发布的内容若侵犯到您的权益,请邮件联系 zhangqy2022#yeah.net 删除,我们将及时处理!

从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!

本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。

本站资源仅供学习和交流使用,版权归原作者所有,请在下载后24小时之内自觉删除。

若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。

常见问题
  • 本站所有资源解压密码为:www.jumaniu.com 或 www.tdji.cn
查看详情

相关文章

评论
暂无评论