脚本编程

VPS服务器备份网站到七牛云存储的shell脚本(第二版)

上一篇文章发布了备份网站到七牛的第一版,这次应回复要求先公布同步原理及shell源码,让喜欢折腾的人有力可使。其实,这个备份工具的原理非常简单,就是借用了官方的同步工具,配合简单的shell语句即可完成。 一、备份原理 简介 qrsync 是一个根据七牛云存储API实现的简易命令行辅助上传同步工具,支持断点续上传,增量同步,它可将用户本地的某目录的文件同步到七牛云存储中,同步或上传几百GB甚至上TB的文件毫无鸭梨。 注意:被同步的文件名和路径必须是utf8编码,非utf8的文件名和路径将会同步失败 下载 qrsync 命令行辅助同步工具下载地址: 用法 先建立一个配置文件(JSON格式),比如叫conf.json,内容如下:   简单说明: ①、src表示需要同步的本地目录,比如网站文件打包存放路径:/www/web_backup,或是你网站文件路径:/home/domain/zhang.ge/public_html ②、2个Key:access_key和secret_key,进入七牛账号设置界面可以获取到。 ③、bucket表示存放备份文件的七牛空间,建议新建一个。 ④、key_prefix 表示存放在七牛空间的上一级目录名称,比如key_prefix=backup/ 则表示备份文件将存放到目标空间下的backup文件夹中。参数留空则表示存放到改空间的根目录。 ⑤、threshold表示文件分块上传的块大小,单位为字节(Byte),可根据你本地的网络带宽来确定。 ⑥、deletable  是否同步删除七牛云上的文件,通常设置0,当本地文件删除时并不删除存储在七牛的对应文件。如果你想删除本地文件的同时也删除存储在存储在七牛的文件,则设置为1。 Ps:以上即为此工具必备的参数,更多参数请至七牛官方文档查看。   在建立完 conf.json 配置文件后,就可以运行 qrsync 程序进行同步。 Unix/Linux/MacOS 系统可以用如下命令行: Windows 系统用户在 菜单栏选择 输入 cmd 回车即可打开 DOS 命令行窗口。 假设你的 qrsync.exe 和配置文件都存放在 d:/tools/,则如下执行: 需要注意的是,qrsync 是增量同步的,如果你上一次同步成功后修改了部分文件,那么再次运行 qrsync 时只同步新增的和被修改的文件。当然,如果上一次同步过程出错了,也可以重新运行 qrsync 程序继续同步。   以上即为各种系统将文件同步到七牛云存储的原理方法,我们换个想法:当我们同步的是网站打包的文件及数据库,那不就变相的实现了将网站备份到七牛云存储了吗?! 二、第二版工具shell源码(未完待续...) 仔细看了备份原理,相信有shell基础的朋友很容易就可以制作一个自动备份的工具了。 下面公布下张戈写的第二版工具源码: 相比第一版: ①、增加了数据库和网站文件分离机制,可分开设定各自的备份间隔,比如数据库我需要每天备份一次,而网站文件我打算7天备份一次; ②、数据库备份文件先压缩后上传,减小文件体积,节省空间流量。 工具文件结构: 初始化脚本源码: 备份及同步脚本源码: Ps:由于七牛最近屏蔽了空间内容查看,导致第二版备份工具未进行测试,所以张戈就不发下载地址了,回头测试无误后再来补充下。 写在最后:从前文可以看出,七牛官方提供的同步工具支持多种系统,比如Windows,有兴趣的朋友可以参考此文,为Windows系统的VPS服务器写一个批处理脚本,来实现网站备份!当然,有此需求的朋友也可以留言,并提供Windows系统的VPS主机,只要有空,张戈可无偿添加此批处理脚本。
阅读全文
脚本编程

VPS服务器备份网站文件和数据库到七牛云存储的shell脚本工具

一直想写一篇关于网站本地备份和远程备份的文章,相关草稿其实在6.12号就写好了,一直因为没有测试环境,没发布出来。时间久了,也就忘了,回头找个时间测试下再发布好了。 今天分享的工具也和备份有关,而且是远程备份,这个工具算是我的无聊之作吧,虽说WordPress已经有wp2pcs这类备份插件了。相信折腾VPS的站长会喜欢我这个工具的,因为它不会常驻占用资源。 一、工具档案 工具名称:Backup_to_QiNiu_By_ZhangGe_Ver1.0.sh 工具语言:Shell,json 工作环境:Linux 功能描述:通过Linux系统计划任务,将网站文件及数据库备份到七牛的免费云存储空间 额外说明: ①、工具默认使用zip打包,如果系统未安装zip,将使用tar打包成tar.gz格式; ②、为了避免中文乱码,工具中全部采用洋文,张戈水平有限,可能存在蹩脚语法(下文有中文对照); ③、使用原生交互风格,未做界面菜单式优化,反正初始化也就用一次。 二、使用说明 ①、下载工具: 进入VPS系统,执行以下命令下载工具:     ②、运行工具,并根据工具提示输入信息:   过程如下: 下面贴上测试截图: 执行完成后,可以复制crontab的命令行,手动执行试试效果: 备份成功后,七牛对应的空间将可以看到刚刚备份的文件: 以上过程为初始化,只需执行一次即可,当然重复执行也没关系哈,只是覆盖了设置而已。 三、后期维护 做完初始化设置之后,如果想改变备份间隔或者备份目标之类的,你可以编辑系统计划任务,来重新定义: 以上第4行则为备份的命令行,以下为后期修改说明: 前5列表示执行频率,具体为 分  时 日 月 周,工具默认是定义在【日】这一列,代码中的 */7 表示每7天备份一次; /www/web/default:需要备份的网站文件路径 test2、123456:数据库用户名和密码 /www/backup_temp:备份文件存放地址,每次备份的文件将保留至下一次备份才会被删除,差不多算本地备份了。 mytest :数据库名称 Ps:当然你也可以仿照第4行,根据实际需要插入多条任务计划。 四、工具展望 此工具也只是张戈的无聊蛋疼作品,VPS用户实在不多,而且都有自己的一套备份系统。发这个工具的目的也只是为了给备份网站多一条出路。 视受欢迎程度,下一版工具将加入 ①、网站文件/数据库分开备份的自定义机制; ②、做成菜单式,将项目分开设置,包括后期维护的交互式菜单,提高易用性 五、附录:七牛云存储 七牛云存储的介绍:https://zhang.ge/1126.html 七牛云存储推广注册链接:https://portal.qiniu.com/signup?code=3lgiiufrno1ua 就说这么多,需要张戈帮忙部署备份的VPS用户,请留言即可!张戈可提供无偿服务!
阅读全文
脚本编程

nginx日志切割及7天前的历史日志删除脚本

上次写到《服务器日志备份超节省空间的思路》,压缩后磁盘占用由93%降到了62%,效果还是不错的!为什么不直接删除呢?其实是因为这些日志涉及到支付等重要业务,保存半年以上也算是保守的做法。 今早,又发现几例磁盘空间报警,占用率都在90%+,关键居然是根分区!这要是日志突然暴涨,把根分区撑爆了,那就可以体验到“菊花一紧”的快感了吧? 索性利用CRT的全局命令把磁盘空间占用率超过75%的服务器筛选出来,打算继续进行清理磁盘空间这个枯燥的工作。结果,发现好几台nginx方向代理服务器的日志居然还没做分割处理,一个access.log居然近200G大小!真是I 服了 U 于是,就有了下面这个日志切割脚本,按日期切割nginx日志,并自动删除7天前的日志(日志均已同步至专用日志存储服务器,可放心删除历史日志。) 将这个脚本添加到计划任务,每天执行一次即可: 此方法,网上一搜一大把,因此本文仅作为个人工作记录,并非教程,随便看看就行,别太在意。
阅读全文
脚本编程

Linux操作系统DNS解析(nameserver)监控脚本

一、起因 昨天,开发组兄弟发现resin日志出现不少支付宝业务报错信息,用户用支付宝购买了产品,钱到账后公司系统却未返回支付成功状态! 这还得了?用户明明支付成功了,结果却显示未到账!!!必须赶紧解决,用户投诉是小,用户流失就大了!仔细分析日志后,发现是解析支付宝接口域名(mapi.alipay.com)时出现延时,导致获取不到支付成功的返回信息! 检查发现OpenSUSE的nameserver居然是谷歌的公用DNS:8.8.8.8!!!尼玛,不出问题才怪呢! 二、解决 虽然阿里新推出了公用DNS:223.5.5.5,223.6.6.6,但这是内部解析外部域名,所以就近的nameserver是最快的,于是赶紧给换成了公司专用的nameserver,问题立马解决了! 然后批量替换了200多台服务器中的nameserver为8.8.8.8的问题系统,以绝后患。 三、绸缪 仔细考虑后,决定加上nameserver的相关监控: ①、编写脚本: vim mon_nameserver ②、加入任务计划: crontab -e 每五分钟执行一次,检查mapi.alipay.com的解析时长,若解析失败或时间大于0.3s则发送报警信息到监控APP上。 下面是将延时阈值设置为0.001s的测试报警截图: 四、附加 这个脚本只是用于特定情况,并非常用功能,仅供参考!脚本核心功能使用的是curl获取域名解析时长,下面简单的补充一下curl部分参数: time_namelookup:DNS 解析域名的时间 time_commect:client和server端建立TCP 连接的时间 time_starttransfer:从client发出请求;到web的server 响应第一个字节的时间 time_total:client发出请求;到web的server发送会所有的相应数据的时间 speed_download:下周速度  单位 byte/s 更多curl详细说明请man或自行搜索。
阅读全文
脚本编程

[不定期更新]简单的shell脚本练习实例

此文将整理一些简单实用、有趣易学的shell练习脚本,希望可以帮到一些想学习shell的初学者。张戈也会在闲暇时间不定期更新此文,对已有实例进行改进和注释,增强可读性和易懂性。当然我也会不定期的添加更多简单、有趣且实用的shell练习脚本,帮助一些有需要的入门学习者。 一、编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息。 原文代码为: 初学者看到这代码,可能不太会用,其实很简单,看到有$1,就表示需要带参数来执行,所以,这个脚本的执行方法是: ①、将以上代码保存为shell脚本,比如test, ②、使用chmod加上执行权限,chmod +x test ③、执行 ./test  newfile 即可看到效果。 Ps:当然也可以不要第②步,直接使用 sh test newfile 即可。 执行效果如下: 这个脚本对于经常写shell的童鞋就很有用,但是忘记带参数执行就会卡住不动,而且不带路径的话就直接在当前目录下生成新文件,会很乱。所以张戈就将其改进一下,变得更加易用: 改进说明:如果未带参数执行,将在家目录下生成带时间戳的新文件,避免重复及乱的问题。可将这个脚本改名后直接丢到path路径中,比如/bin/addjb  那么你的系统就多了一个命令 addjb了,是不是很有趣呢! 时间有限,以下脚本暂时就不做测试、解释或改进了,请先自行测试吧!有空再来更新。 二、任意三个整数,判断最大数。 执行效果:   注:非常简单的逻辑判断脚本,有兴趣的可以改进下,练练手。   三、求100以内偶数的和。 方法①: 方法②:  四、利用for语句ping C类网、ping B类网。 ①、ping C类网: ②、ping B类网: 五、提示输入一个用户名,判断用户是否存在,如果存在,显示一下用户默认的shell。 六、监控系统登录人数,超过四个,显示已经达到四个,5S检查一下,并退出脚本(exit)
阅读全文
js获取url中?后的参数,修复移动版无法切换到电脑版的BUG 脚本编程

js获取url中?后的参数,修复移动版无法切换到电脑版的BUG

昨天,发布了《完美实现移动主题在360网站卫士缓存全开情况下的切换》一文,通过JS实现了主题在移动端访问时的自动切换,最后提到了可以在电脑版和移动版的footer里面加上手动切换链接,实现手动版本切换功能。 今早发现,电脑版切换到移动版是没问题了,但是移动版切换到电脑版,JS将会再次工作uaredirect.js会再次做UA判断,然后由又跳回了电脑版! 也就是说,手机上浏览无法手动切换到电脑版,看来还得继续折腾! 于是,想到一个办法,给移动版的切换链接带上一个参数,再修改 uaredirect.js,当发现链接后面带了指定参数时,就直接return,而不再进行UA判断,避免再次跳转的尴尬。。。 说干就干,在oschina找到如下2中获取url后面参数的方法: 根据个人喜好,张戈选择了第二种,然后如下修改uaredirect.js 最后,在移动版主题的footer里面加上如下代码: Ps:代码中加入登陆链接的原因,是因为WordPress Mobile Pack插件会强制转换后台样式,很不和谐!所以改成了登陆到PC版后台的链接,若手机主题已存在登陆链接的,删除替换即可。 最终,解决了移动版无法切换到电脑版的BUG~!   最新补充:突然发现了uaredirect.js中其实已经自带了中断机制:#fromapp  所以,只要在切换链接后面加上 #fromapp 就可以避免js跳转到移动版了! 冏。。。那上面的内容都是白忙活了,仅供参考,仅供参考。。。。 如果,你想换成其他中断参数,可以修改百度提供的uaredirect.js,将代码中的fromapp 改成你要的标识即可,比如张戈就修改成了pc,所以在手机上只要访问 https://zhang.ge#pc 就可以正常切换到电脑版了! 那么,文章最后那一大段footer代码,也可以将里面的?type=pc改成自定义的中断参数了,比如 #pc,自己看着办~
阅读全文