学Linux,上红联!
Linux系统教程
您的位置: Linux系统教程 > Linux数据库 >

一键且自动备份Linux VPS文件/数据库脚本功能及应用

时间:2017-08-10来源:laozuo.org 作者:老左
老左每年都会看到不少的网友痛诉主机商如何如何,导致自己数据丢失的问题,有些站长在选择VPS、服务器架设网站之后,压根一次都没有备份过,如果有这种可能主机商磁盘坏了,跑路了,数据无法恢复了,那么结果可想而知。主机商固然是有原因,但无论我们选择何家主机,需要备份的是我们自己,不能太依赖商家。
甚至我们需要多方式、多渠道备份,在上上周的时候老左遇到一个网友通过快照备份某个主机,但是迁移数据还原的时候无法启动,就这么数据备份成快照,但无法还原的结果。当然,老左每年也会折腾不少的VPS,也有一些自认为比较稳定的商家会放松备份警惕,比如一直用来存放脚本、资源的资源库,前一段时间由于磁盘坏掉也没有能恢复数据,可见备份的重要性。
我们每个人都有各自的备份网站方式,有直接手工下载复制备份,也有网站自带的备份功能,也有导出数据库打包文件下载备份,也有高级一点的用户实现自动异地备份。反正不管如何,我们选择适合自己的都可以,即便数据不太重要,也要有一定的备份规律,好歹万一出问题,大部分数据都在。
在这篇文章中,看到teddysun同学在博客中发布的一个备份数据库脚本,可以实现自动备份到本地服务器,以及还可以备份到Google Drive网盘。
 
第一、准备工作
1、这个脚本老左也是第一次使用,所以我们在准备使用之前建议在测试机或者将已有数据备份再测试,以免有不良症状。
2、根据介绍可以备份全数据库MySQL/MariaDB,或者指定数据库用户备份。
3、还支持将文件直接上传至远程FTP空间,以及支持备份到Google Drive网盘。
4、本文脚本来自https://teddysun.com/469.html,具体以官方为准,并感谢teddysun提供脚本。
 
第二、一键备份脚本下载和授权
wget --no-check-certificate https://github.com/teddysun/across/raw/master/backup.sh
chmod +x backup.sh
 
第三、修改文件配置参数
在执行脚本之前,我们需要先修改backup.sh参数,里面内容比较丰富,修改需要细致。
1、基本参数
ENCRYPTFLG :true设置加密
BACKUPPASS :设置打包加密密码
LOCALDIR:设置备份目录,根据我们实际的一键包或者面板设置
TEMPDIR:备份临时目录
LOGFILE:脚本运行时候的日志文件
MYSQL_ROOT_PASSWORD:ROOT数据库管理密码
MYSQL_DATABASE_NAME:指定备份数据库名,不写则备份全部数据库用户
备注:MYSQL_DATABASE_NAME是数组形式,如果一次备份多个数据库名,我们依次复制且修改数组参数。
2、指定备份文件
我们可以只备份上面数据库,也可以通过这个脚本设定备份网站文件目录。
我们可以在BACKUP[0]=""设置备份目录,同样是数组形式,如果有备份多个网站,则格式复制数组形式。
3、远程FTP空间信息
FTP_FLG:是否上传至远程FTP空间,true 为上传
FTP_HOST:远程FTP服务器IP地址
FTP_USER:远程FTP服务器用户
FTP_PASS :远程FTP服务器密码
FTP_DIR :远程服务器备份的目录文件夹,可以指定
 
第四、执行备份脚本体验
./backup.sh
这里我们修改好参数之后,可以自行脚本实现备份进程。
即便我们后面需要设定定时备份,我们也需要手工测试下脚本是否正常。这里我就简单备份下数据库测试,可以看到执行没有错误,且在对应备份目录有备份下来的数据库。
 
第五、解密、解压缩文件
无论我们是备份到本地服务器,还是远程FTP空间,建议采用加密形式,这样即便FTP空间文件泄露,也至少有一道较为安全保障。这里我们备份好的文件是.ENC加密格式的,我们需要先解密后解压。
1、解密格式
openssl enc -aes256 -in [解密文件名] -out 解密出来的文件夹压缩包.tgz -pass pass:[设定的加密密码] -d -md sha1
2、解压缩
tar -zxPf [压缩包名称]
 
第六、设定定时运行
30 1 * * * root bash /root/backup.sh
如果我们希望实现自动定时备份运行,可以添加到crontab定时脚本中执行。
 
最后,这个脚本还自带备份到谷歌网盘的,如果有需要可以参考官方网站去设定。一般我们用法备份到本地或者自己的FTP空间远程备份也是够用的。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/32275.html
顶上去
(0)
0%
踩下去
(0)
0%
------分隔线----------------------------