Shell脚本调用UPX命令定期同步数据至又拍云
in Shell运维 with 0 comment

Shell脚本调用UPX命令定期同步数据至又拍云

in Shell运维 with 0 comment

又拍云为站长提供免费的CDN加速和静态存储,唯一不够有好的便是不支持自动同步,使用FTP同步效率比较低,而官方提供的UPX命令行工具则是一个绝佳的选择

shell_upx_upay.jpg

CDN插件与同步

作为站长肯定会接触不少CDN插件,绝大多数CDN插件只是自动为您的静态资源进行url替换
有的插件可以设置FTP信息从而达到同步上传静态文件
但是FTP同步的效率实在是惨不忍睹
又拍云相关的一些自由开发者也开发了一些同步插件,本质上也不能称之为同步
其主要原理是修改上传路径,直接将文件上传至又拍云静态存储中去

UPX命令行管理工具

UPX命令行管理工具是又拍云官网主力推行
可以在API/SDK不适用的情况下,同步本地目录的增量文件
除了解决增量文件同步外,也支持文件上传、下载,目录创建,文件、目录删除和异步文件删除等
我们完全可以理解为一个类似FTP命令的新命令

下载安装UPX

#Linux 命令方式下载
#64位环境
$ wget -O /usr/local/bin/upx http://collection.b0.upaiyun.com/softwares/upx/upx-linux-amd64-v0.1.3
#32位环境
$ wget -O /usr/local/bin/upx http://collection.b0.upaiyun.com/softwares/upx/upx-linux-i386-v0.1.3
#赋予权限
$ chmod +x /usr/local/bin/upx

常规命令使用

选择几个比较常见的命令,具体可以参考又拍云的帮助文档

#登录,界面无反馈标示登录成功
#这个设定很奇葩
upx login 实例名 操作员账号 密码

#全量提交
#将本地目录全量上传,上传效率不错
#不会删除实例上多余的文件
upx put /mebugs /

#增量同步,
#不会删除实例上多余的文件
upx sync /mebugs /

关于删除实例上多余的文件,是有相应的同步命令的
由于米虫不常用,因此没有贴

定时任务实现

这里采用一个shell脚本完成定时同步的能力
静默循环执行脚本autoSyncUpay.sh
因为Crontab不能识别环境变量,始终无法识别UPX这个命令
因此只好用基础的循环方式来处理

#!/bin/bash
function upSync()
{
while true
do
time=`date +%Y%m%d%H%M`
echo $time > upSync.log
#先登出
upx logout
#再登入
upx login *** *** ***
#增量同步
upx sync /www/wwwroot/mebugs/static /static
#间隔时间
sleep 1h
done
}
#后台运行
upSync &

DEBUG测试结果

测试脚本可用性,使用了5分钟循环

sh -x upSync.sh
+ upSync
+ true
++ date +%Y%m%d%H%M
+ time=201811051222
+ echo 201811051222
+ upx logout
+ upx login *** *** ***
+ upx sync /www/wwwroot/mebugs/static /static
**9 succ, 0 fails, 1432 ignore.**
+ sleep 5m
+ true
++ date +%Y%m%d%H%M
+ time=201811051227
+ echo 201811051227
+ upx logout
+ upx login *** *** ***
+ upx sync /www/wwwroot/mebugs/static /static
**4 succ, 0 fails, 1440 ignore.**
+ sleep 5m

测试通过

Responses