七牛有卖免费云服务器器吗

下次自动登录
现在的位置:
<img title="本文二维码,手机扫一扫,精彩随身带!" style="float:cursor:pointer" src="/v1/create-qr-code/?size=63×63&data=http://zhangge.net/4221.html" alt="QR: VPS服务器备份网站到七牛云存储的shell脚本" width="68" height="68"/>
VPS服务器备份网站到七牛云存储的shell脚本
<div data="{'url':'http://zhangge.net/4221.html','pic':'http://zhangge.net/wp-content/uploads/2014/01/qiniu.png','text':'分享@张戈博客 的文章「VPS服务器备份网站到七牛云存储的shell脚本」:上一篇文章发布了备份网站到七牛的第一版,这次应回复要求先公布同步原理及shell源码,让喜欢折腾的人有力可使。其实,这个备份工具的原理非常简单,就是借用了官方的同步工具,配合简单的shell语句即可完成。...'}" class="bdshare_t bds_tools get-codes-bdshare stb_share_buttons stb_group" id="bdshare">
上一篇文章发布了备份网站到七牛的第一版,这次应回复要求先公布同步原理及shell源码,让喜欢折腾的人有力可使。其实,这个备份工具的原理非常简单,就是借用了官方的同步工具,配合简单的shell语句即可完成。
一、备份原理
qrsync 是一个根据API实现的简易命令行辅助上传同步工具,支持断点续上传,增量同步,它可将用户本地的某目录的文件同步到七牛云存储中,同步或上传几百GB甚至上TB的文件毫无鸭梨。
注意:被同步的文件名和路径必须是utf8编码,非utf8的文件名和路径将会同步失败
qrsync 命令行辅助同步工具下载地址:
Mac OS: http://devtools.qiniu.io/qiniu-devtools-darwin_amd64-current.tar.gz
Linux 64bits: http://devtools.qiniu.io/qiniu-devtools-linux_amd64-current.tar.gz
Linux 32bits: http://devtools.qiniu.io/qiniu-devtools-linux_386-current.tar.gz
Linux ARMv6: http://devtools.qiniu.io/qiniu-devtools-linux_arm-current.tar.gz
Windows 32bits: http://devtools.qiniu.io/qiniu-devtools-windows_386-current.zip
Windows 64bits: http://devtools.qiniu.io/qiniu-devtools-windows_amd64-current.zip
Mac OS: http://devtools.qiniu.io/qiniu-devtools-darwin_amd64-current.tar.gzLinux 64bits: http://devtools.qiniu.io/qiniu-devtools-linux_amd64-current.tar.gzLinux 32bits: http://devtools.qiniu.io/qiniu-devtools-linux_386-current.tar.gzLinux ARMv6: http://devtools.qiniu.io/qiniu-devtools-linux_arm-current.tar.gzWindows 32bits: http://devtools.qiniu.io/qiniu-devtools-windows_386-current.zipWindows 64bits: http://devtools.qiniu.io/qiniu-devtools-windows_amd64-current.zip
先建立一个配置文件(JSON格式),比如叫conf.json,内容如下:
"/home/your/sync_dir",
access_key=&AccessKey&
&secret_key=&SecretKey&
&bucket=&Bucket&
&key_prefix=&KeyPrefix&
&threshold=&Threshold&",
"deletable":
"debug_level":
1234567891011
{&&&&"src":&&&&&&&&&&"/home/your/sync_dir",&&&&"dest":&&&&&&&& "qiniu:&&&&&&&&&&&&&&&&&&&&&&&&access_key=&AccessKey&&&&&&&&&&&&&&&&&&&&&&&&&&secret_key=&SecretKey&&&&&&&&&&&&&&&&&&&&&&&&&&bucket=&Bucket&&&&&&&&&&&&&&&&&&&&&&&&&&key_prefix=&KeyPrefix&&&&&&&&&&&&&&&&&&&&&&&&&&threshold=&Threshold&",&&&&"deletable":&&&&0,&&&&"debug_level":&&1}
简单说明:
①、src表示需要同步的本地目录,比如网站文件打包存放路径:/www/web_backup,或是你网站文件路径:/home/domain/zhangge.net/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 系统可以用如下命令行:
./qrsync /path/of/your-conf.json
./qrsync /path/of/your-conf.json
Windows 系统用户在 [开始] 菜单栏选择 [运行] 输入 cmd 回车即可打开 DOS 命令行窗口。
假设你的 qrsync.exe 和配置文件都存放在 d:/tools/,则如下执行:
D:\tools\qrsync.exe D:\tools\your-conf.json
D:\tools\qrsync.exe D:\tools\your-conf.json
需要注意的是,qrsync 是增量同步的,如果你上一次同步成功后修改了部分文件,那么再次运行 qrsync 时只同步新增的和被修改的文件。当然,如果上一次同步过程出错了,也可以重新运行 qrsync 程序继续同步。
以上即为各种系统将文件同步到七牛云存储的原理方法,我们换个想法:当我们同步的是网站打包的文件及数据库,那不就变相的实现了将网站云存储了吗?!
二、第二版工具shell源码(未完待续...)
仔细看了备份原理,相信有shell基础的朋友很容易就可以制作一个自动备份的工具了。
下面公布下张戈写的第二版工具源码:
相比第一版:
①、增加了数据库和网站文件分离机制,可分开设定各自的备份间隔,比如数据库我需要每天备份一次,而网站文件我打算7天备份一次;
②、数据库备份文件先压缩后上传,减小文件体积,节省空间流量。
工具文件结构:
[ ~]# tree qiniu
|-- backup
#本地默认同步目录
#配置文件存放目录
|-- main.sh
#初始化shell脚本
|-- QN_backup.sh
#备份及同步shell脚本
`-- qrsync
2 directories, 3 files
[ ~]# tree qiniuqiniu|-- backup&&&&&&&&&&&&&&#本地默认同步目录|-- conf&&&&&&&&&&&&&&&&&& #配置文件存放目录|-- main.sh&&&&&&&&&& #初始化shell脚本|-- QN_backup.sh&&&& #备份及同步shell脚本`-- qrsync2 directories, 3 files
初始化脚本源码:
[ ~]#vim main.sh
#!/bin/bash
#Author:ZhangGe
#Des:Backup you website to qiniu CDN.
#config Em.
filepath(){
read -p "Please input the webroot like /domain/zhangge.net/public_html:" filepath
if [ -z $filepath ];then
echo Nothing input!Please retry..
elif [ ! -d $filepath ];then
echo $filepath not found! Press Enter_key retry!
access_key(){
read -p "Please input the access_key:" access_key
if [ -z $access_key ];then
echo Nothing input!Please retry..
access_key
secret_key(){
read -p "Please input the secret_key:" secret_key
if [ -z $secret_key ];then
echo Nothing input!Please retry..
secret_key
read -p "Please input the bucket name:" bucket
if [ -z $bucket ];then
echo Nothing input!Please retry..
mysqluser(){
read -p "Please input the mysql username:" mysqluser
if [ -z $mysqluser ];then
echo Nothing input!Please retry..
mysqlpd(){
read -p "Please input the mysql password:" mysqlpd
if [ -z $mysqlpd ];then
echo Nothing input!Please retry..
backpath(){
read -p "Please input the backup path:" backpath
if [ -z $backpath ];then
backpath=`pwd`/backup
elif [ ! -d $backpath ];then
echo $backpath Not exist!!Please retry..
read -p "Please input the database name:" dbname
if [ -z $dbname ];then
echo Nothing input!Please retry..
read -p "Please input the db backup rate time(like 1/2/3..30):" d_time
if [ -z $d_time ];then
read -p "Please input the web backup rate time(like 1/2/3..30):" w_time
if [ -z $w_time ];then
access_key
secret_key
cd $(cd $(dirname $BASH_SOURCE) && pwd)
echo \{\"src\":\"$backpath\",\"dest\":\"qiniu:access_key=$access_key\&secret_key=$secret_key\&bucket=$bucket\&key_prefix=backup\/\&threshold=512000\",\"deletable\":0,\"debug_level\":1\}&./conf/qrsync.conf
/var/spool/cron/root && cp -f /var/spool/cron/root /var/spool/cron/root_bak
grep -v "QN_backup" /var/spool/cron/root &/var/spool/cron/root
echo "#Add by QN_backup Scripts"
&&/var/spool/cron/root
echo "0 0 */$d_time * * sh `pwd`/QN_backup.sh db $mysqluser $mysqlpd $dbname $backpath"
&&/var/spool/cron/root
echo "0 0 */$w_time * * sh `pwd`/QN_backup.sh file $filepath $backpath "
&&/var/spool/cron/root
#reload the crontab
/sbin/service crond reload 2&/dev/null
echo =========================The crontab list=================================
crontab -l
echo =========================The crontab list=================================
echo compelet!
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
[ ~]#vim main.sh#!/bin/bash#Author:ZhangGe#Des:Backup you website to qiniu CDN.#Date:#config Em.filepath(){&&&&read -p "Please input the webroot like /domain/zhangge.net/public_html:" filepath&&&&if [ -z $filepath ];then&&&&&&&&echo Nothing input!Please retry..&&&&&&&&filepath&&&&elif [ ! -d $filepath ];then&&&&&&&&echo $filepath not found! Press Enter_key retry!&&&&&&&&filepath&&&&fi}access_key(){&&&&read -p "Please input the access_key:" access_key&&&&if [ -z $access_key ];then&&&&&&&&&&&&&&&&echo Nothing input!Please retry..&&&&&&&&&&&&&&&&access_key&&&&&&&&fi}secret_key(){&&&&read -p "Please input the secret_key:" secret_key&&&&if [ -z $secret_key ];then&&&&&&&&&&&&&&&&echo Nothing input!Please retry..&&&&&&&&&&&&&&&&secret_key&&&&&&&&fi}bucket(){&&&&read -p "Please input the bucket name:" bucket&&&&if [ -z $bucket ];then&&&&&&&&&&&&&&&&echo Nothing input!Please retry..&&&&&&&&&&&&&&&&bucket&&&&&&&&fi}mysqluser(){&&&&&&&&read -p "Please input the mysql username:" mysqluser&&&&&&&&if [ -z $mysqluser ];then&&&&&&&&&&&&&&&&echo Nothing input!Please retry..&&&&&&&&&&&&&&&&mysqluser&&&&&&&&fi}mysqlpd(){&&&&&&&&read -p "Please input the mysql password:" mysqlpd&&&&&&&&if [ -z $mysqlpd ];then&&&&&&&&&&&&&&&&echo Nothing input!Please retry..&&&&&&&&&&&&&&&&mysqlpd&&&&&&&&fi}backpath(){&&&&&&&&read -p "Please input the backup path:" backpath&&&&&&&&if [ -z $backpath ];then&&&&&&&&&&&&&&&&backpath=`pwd`/backup&&&&&&&&elif [ ! -d $backpath ];then&&&&&&&&echo $backpath Not exist!!Please retry..&&&&&&&&backpath&&&&&&&&fi}dbname(){&&&&&&&&read -p "Please input the database name:" dbname&&&&&&&&if [ -z $dbname ];then&&&&&&&&&&&&&&&&echo Nothing input!Please retry..&&&&&&&&&&&&&&&&dbname&&&&&&&&fi}d_time(){&&&&&&&&read -p "Please input the db backup rate time(like 1/2/3..30):" d_time&&&&&&&&if [ -z $d_time ];then&&&&&&&&&&&&&&d_time=1&&&&&&&&fi}w_time(){&&&&&&&&read -p "Please input the web backup rate time(like 1/2/3..30):" w_time&&&&&&&&if [ -z $w_time ];then&&&&&&&&&&&&&&w_time=7&&&&&&&&fi}input(){&&&&&&&&clear&&&&&&&&filepath&&&&&&&&access_key&&&&&&&&secret_key&&&&&&&&bucket&&&&&&&&mysqluser&&&&&&&&mysqlpd&&&&&&&&dbname&&&&&&&&backpath&&&&&&&&d_time&&&&&&&&w_time&&&&&&&&}inputcd $(cd $(dirname $BASH_SOURCE) && pwd)echo \{\"src\":\"$backpath\",\"dest\":\"qiniu:access_key=$access_key\&secret_key=$secret_key\&bucket=$bucket\&key_prefix=backup\/\&threshold=512000\",\"deletable\":0,\"debug_level\":1\}&./conf/qrsync.conf#crontabtest -f&&/var/spool/cron/root && cp -f /var/spool/cron/root /var/spool/cron/root_bakgrep -v "QN_backup" /var/spool/cron/root &/var/spool/cron/rootecho "#Add by QN_backup Scripts"&&&&&&&&&&&&&&&&&&&&&&&&&&/var/spool/cron/rootecho "0 0 */$d_time * * sh `pwd`/QN_backup.sh db $mysqluser $mysqlpd $dbname $backpath"&& &&/var/spool/cron/rootecho "0 0 */$w_time * * sh `pwd`/QN_backup.sh file $filepath $backpath "&& &&/var/spool/cron/root#reload the crontab/sbin/service crond reload 2&/dev/nullecho =========================The crontab list=================================crontab -lecho =========================The crontab list=================================echo compelet!exit 0
备份及同步脚本源码:
[ ~]#vim QN_backup.sh
#!/bin/bash
#Author:ZhangGe
#Des:Compress file
TODAY=$(date +%Y-%m-%d)
cd $(cd $(dirname $BASH_SOURCE) && pwd)
if [ -z $1 ];then
echo Please Usage:./QN_backup.sh back_type filepath backpath..and so on
if [ "$1" == "db" ];then
mysqluser=$2
mysqlpd=$3
backpath=$5
if [ ! -z $backpath ];then
rm -f $backpath/database_backup*
mysqldump -u$mysqluser -p$mysqlpd $dbname&$backpath/database_backup_$TODAY\.sql
zip --version &/dev/null && zip $backpath/database_backup_$TODAY\.zip $backpath/database_backup_$TODAY\.sql || tar cvzf $backpath/database_backup_$TODAY\.tar.gz $backpath/database_backup_$TODAY\.sql
if [ "$1" == "file" ];then
filepath=$2
backpath=$3
if [ ! -z $backpath ];then
rm -f $backpath/website_backup*
zip --version &/dev/null && zip $backpath/website_backup.$TODAY\.zip $WebRoot || tar cvzf $backpath/website_backup.$TODAY\.tar.gz $WebRoot
./qrsync ./conf/qrsync.conf
1234567891011121314151617181920212223242526272829303132
[ ~]#vim QN_backup.sh#!/bin/bash#Author:ZhangGe#Des:Compress file#Date:TODAY=$(date +%Y-%m-%d)cd $(cd $(dirname $BASH_SOURCE) && pwd)if [ -z $1 ];then&&&&&&&&echo Please Usage:./QN_backup.sh back_type filepath backpath..and so on&&&&&&&&exit 1fiif [ "$1" == "db" ];then&&&&&&&&mysqluser=$2&&&&&&&&mysqlpd=$3&&&&&&&&dbname=$4&&&&&&&&backpath=$5&&&&&&&&if [ ! -z $backpath ];then&&&&&&&&&&&&&&&&rm -f $backpath/database_backup*&&&&&&&&fi&&&&&&&&mysqldump -u$mysqluser -p$mysqlpd $dbname&$backpath/database_backup_$TODAY\.sql&&&&&&&&zip --version &/dev/null && zip $backpath/database_backup_$TODAY\.zip $backpath/database_backup_$TODAY\.sql || tar cvzf $backpath/database_backup_$TODAY\.tar.gz $backpath/database_backup_$TODAY\.sqlfiif [ "$1" == "file" ];then&&&&&&&&filepath=$2&&&&&&&&backpath=$3&&&&&&&&if [ ! -z $backpath ];then&&&&&&&&&&&&&&&&rm -f $backpath/website_backup*&&&&&&&&fi&&&&&&&&zip --version &/dev/null && zip $backpath/website_backup.$TODAY\.zip $WebRoot || tar cvzf $backpath/website_backup.$TODAY\.tar.gz $WebRootfi./qrsync ./conf/qrsync.confexit 0
Ps:由于七牛最近屏蔽了空间内容查看,导致第二版备份工具未进行测试,所以张戈就不发下载地址了,回头测试无误后再来补充下。
写在最后:从前文可以看出,七牛官方提供的同步工具支持多种系统,比如Windows,有兴趣的朋友可以参考此文,为Windows系统的VPS服务器写一个批处理脚本,来实现网站备份!当然,有此需求的朋友也可以留言,并提供Windows系统的VPS主机,只要有空,张戈可无偿添加此批处理脚本。
【上篇】【下篇】
您可能还会对这些文章感兴趣!
中国博客联盟——无组织,不博客!
搜什么就是什么——懂你的云标签!& &&&
随便挑了些,看你喜欢吗?& & & & & & & & &&七牛云存储:为移动时代开发者打造的数据平台 - A5站长网
当前位置: >>
七牛云存储:为移动时代开发者打造的数据平台
10:26&&来源:&
  网站名称:七牛云存储
  网址:
  七牛云存储,致力于提供最适合开发者的数据在线托管,传输加速以及云端处理的服务。
  目前公司主营产品为七牛云存储,区别于国内其他云存储,七牛云存储首创的双向加速特性以及独特的云端富媒体处理服务成为众多企业竞相选择的理由之一。七牛人崇尚精益创业,他们以一种专注、专业、极客、极致的态度,认真聆听客户的每一条意见,并且时刻为开发者考虑到极致。目前,七牛已经为大量移动互联网,web2.0, 媒体,电商以及游戏等领域的知名企业提供了全方位的解决方案与服务。
  区别于国内外其他云存储,七牛自行研发的全分布式架构解决了其他云存储单一数据中心架构可能存在的风险,同时首创双向加速特性对数据上传下载均加速,使得数据访问速度较传统方案平均提升50%以上。此外,镜像存储、客户端直传、断点续上传、云端富媒体处理等七牛云存储独有的功能也大大提升了开发效率,最大程度减少了服务器资源浪费。
  七牛云存储的核心服务完全采用Go语言实现,原因有二:1、作为编译型的语言,Go语言性能高;2、云计算都是假设单机是可以宕机的,从稳定性来讲云存储服务需要Go语言。
  目前,七牛已经为大量移动互联网,web2.0, 媒体,电商以及游戏等领域的知名企业提供了全方位的解决方案与服务。
责任编辑:佩佩
作者:佩佩
延伸阅读:关键词:
站长杂谈 草根站长信息中心当前位置&&&&&&&&&
七牛云存储:APP开发者的数据平台
【文章摘要】七牛云存储由国内存储行业的领军人物之一许式伟于2011年创立。团队核心成员来自于盛大、金山、网络、惠普等知名互联网公司。创始人兼CEO许式伟甚至被誉为国内最适合做云存储的几人之一。
  七牛的创立和成长  七牛云存储由国内存储行业的领军人物之一许式伟于2011年创立。团队核心成员来自于盛大、金山、网络、惠普等知名互联网公司。创始人兼CEO许式伟甚至被誉为国内最适合做云存储的几人之一。  在团队创立之初,由于核心技术骨干都曾做过网盘,出于惯性思维,七牛最先做的是一款面向终端用户的网盘产品“Q盘”,从开发到上线仅用了几个月时间。但在网盘开发的过程中,创始人兼CEO许式伟和团队反复思考公司的定位情况。经过多次讨论,七牛团队决定用自己最擅长的技术性服务来为中小企业开发者提供云存储服务。许式伟表示,做网盘最多是一个锦上添花的事情,但是做云存储服务,却能够给一些企业雪中送炭。他认为,在大数据时代,数据管理将会是绝大多数公司都不得不面对的最大难题。  从2012年到现在,七牛的用户增长速度非常快,现在已经拥有一万家用户。其中,包括美图秀秀、豌豆荚、camera360等知名品牌APP。除了这部分做图片的客户以外,还有一部分是视频音频公司,其客户主要集中于富媒体类型的公司。  租用数据中心构建平台  七牛云存储的架构是全球服务架构,具有高可扩展性和极强的灵活性。也就是说,可客户再哪里需要,就可以快速地把服务器站点部署到哪里。目前,七牛的服务器站点已经覆盖了国内的主要地区,而且正在选择合适的合作伙伴以覆盖几个主要的国外地点。  对于是自建还是租用数据中心,七牛云存储COO吕桂华表示,基础设施不是七牛的长项,所以为了把自己所有的精力都用于为客户提供基于基础设施的服务,七牛选择自己购买服务器,租用数据中心。目前,购买的服务器有多个品牌,其中戴尔的服务器数量大概占到一半以上。  七牛作为云上的公司,他们倾向于把所有的IT设施都托管到云上,比如代码托管,就是采用第三方托管的方式。吕桂华表示,采用第三方托管的方式,比自建设施要可靠,而且总体运营成本也会更低。  为了应对数据量的增长,七牛以半个月为一个采购周期,只要用户在半个月内不会把增加的存储空间都用完,七牛就可以为用户提供足够多的存储空间。  谈到对设备供应商的期望,吕桂华笑道:“当然是越便宜越好。”同时,他也表示,希望设备供应商能够提供标准化的产品,希望单位存储量的成本能够降低。  独特技术减少服务器资源浪费  七牛自行研发的全分布式架构解决了单一数据中心架构可能存在的风险,同时首创双向加速特性对数据上传下载均加速,使得数据访问速度较传统方案平均提升50%以上。该技术不仅保证了七牛云存储上的文件读写速度均可达到国内第一流的水平,还解决了跨运营商的访问性和访问性能问题。  静态资源托管采用完全自主研发的新一代海量存储系统,多机房实时互备机制让数据永不丢失,且持续在线。对于常见的富媒体文件,采用海量分布式数据处理系统,搭载常用的数据处理算法,大幅度减少客户在基础设施上的投入。  此外,镜像存储、客户端直传、断点续上传、云端富媒体处理等七牛云存储独有的功能也大大提升了开发效率,最大程度减少了服务器资源浪费。  背景资料:七牛云存储创立于2011年,2012年的中国云计算大会开始走入大众视野,该公司致力于为开发者提供数据在线托管、传输加速以及云端处理的服务。七牛云存储的核心团队成员来自于盛大、金山、网龙、惠普等知名互联网公司。
责任编辑:韩蕊
关于&开发者 云存储&相关报道
loading...
服务器最新文章
服务器最新专题
网站合作、内容监督、商务咨询、投诉建议:010-
Copyright &#169; 2000-- 硅谷动力公司版权所有 京ICP证000088号七牛云存储访问概述
在开始使用七牛云存储之前,需要一些准备工作。
首先,需要获得AccessKey和SecretKey。这两个密钥用于用户请求的身份验证,可以从七牛云存储的获得。用户如果还没有七牛云存储的帐号,需要先。获得帐号后,登录进入“开发者平台”,而后进入,获取密钥。
一个用户最多可以拥有两对密钥,并且可以同时使用。通常情况下,用户只需使用一对密钥。但当用户需要切换密钥的时候,可以同时使用两对密钥,作为过渡。完成切换后,再删除原来的那个密钥。
用来标识用户身份,会随同用户发起的请求传递到七牛云存储。七牛云存储通过AccessKey识别用户的身份。
同AccessKey一一对应,用户使用ScreteKey对请求签名,而七牛云存储则使用SecretKey对请求作验证,以确认请求的合法性。
注意:SecretKey用于签名请求,因此用户必须严格保密,不能泄露给第三方。亦不可将SecretKe置于客户端,分发给最终用户。一旦发生SecretKey泄露,请立刻更换密钥。
验证和Token
为了保护用户的资源,七牛云存储要求对每个上传请求、文件管理请求,以及私有资源的下载和云处理请求,都需要进行验证,确保访问都是合法授权的。
用户请求的验证
验证方式并不复杂,大致有这样几个步骤:
按照既定规则,将请求中的关键部分整合成待签名数据;
以SecretKey为密钥,对带签名数据进行hmac_sha1计算;
对上一步所得的结果进行URL安全的Base64编码;
将编码结果同AccessKey等数据合并起来,构成最终的token。
用户在自己的业务服务器中执行上述验证算法,获得token。然后将token交付给应用客户端,客户端据此向七牛云存储发起请求,执行所需的操作。
如果用户仅仅是从自己的服务器,或者桌面计算机发起请求,那么执行验证算法后,可随即发请求。
但是,上述验证过程 绝对不可在最终客户端执行 ,该过程涉及SecretKey,如在客户端执行,会不可避免地分发SecretKey,造成泄露,危及用户资源的安全。
七牛云存储的服务中用到三种token:
用于上传的UploadToken;
用于下载的DownloadToken;
用于资源管理的AccessToken。
这三种token验证的过程基本一致,差别在于签名数据的合成,以及最后token的附加成分不同。
下面逐一介绍:
Upload Token
Upload Token用于资源上传请求的验证。由上传请求(使用)的token字段携带,发送至七牛云存储。
一个Upload Token由三个部分组成:&AccessKey&:&SignedData&:&UnsignedData&。
&AccessKey&:用户的AccessKey,用于向七牛云存储表明请求者的身份;
&SignedData&:签名后的结果,即urlsafe_base64_encode(hmac_sha1(&SecretKey&, &UnsignedData&));
&UnsignedData&:待签名数据块。将一组JSON格式的上传参数进行URL安全的Base64编码,获得的字符串即为&UnsignedData&。
详见小节。
下面是一个Upload Token的示例:
j6XaEDm5DwWvn0H9TTJs9MugjunHK8Cwo3luCglo:PDpKklPEog5x3bpcY5Jkgh0YsPY=:eyJzY29wZSI6IndvbGZnYW5nIiwiZGVhZGxpbmUiOjEzNzMxMDExOTN9
Download Token
Download Token用于的下载,以及对私有资源作云处理时的请求验证。由下载URL的 token 参数携带,发送至七牛云存储。
一个Download Token由两个部分组成:&AccessKey&:&SignedData&
&AccessKey&:用户的AccessKey,用于向七牛云存储表明请求者的身份;
&SignedData&:签名后的结果,即urlsafe_base64_encode(hmac_sh1(&SecretKey&, &UnsignedData&));
这里的&UnsignedData&是下载资源的URL(包含请求的过期时间):http://my-/the-key?e=。详见
下面是一个Download Token的示例:
iN7NgwM31j4-BZacMjPrOQBs34UG1maYCAQmhdCV:vT1lXEttzzPLP4i5T8YVz0AEjCg=
Access Token
Access Token用于的请求验证。由资源管理请求的HTTP头中的Authorization字段携带,发送至七牛云存储。
一个Access Token由三个部分组成:QBox &AccessKey&:&SignedData&
QBox:固定的前缀,后面紧跟一个空格;
&AccessKey&:用户的AccessKey,用于向七牛云存储表明请求者的身份;
&SignedData&:签名后的结果,即urlsafe_base64_encode(hmac_sh1(&SecretKey&, &UnsignedData&));
&UnsignedData&是对整个请求的核心要素的整合,遵循以下规则:
如果请求不包含Body(HTTP请求没有携带Body),则&UnsignedData&为&path&?&query&\n。&path&是URL请求的路径部分,&query& 是URL的查询部分。注意:最后的换行符\n是必须的。
如果请求的Content-Type不是application/x-www-form-urlencoded,那么即使请求包含Body,也将被忽略。
除上述情况外,请求的Body都将被包含在被签名数据中,即&UnsignedData&为&path&?&query&\n&body&。
下面是一个Access Token的示例:
QBox j6XaEDm5DwWvn0H9TTJs9MugjunHK8Cwo3luCglo:qJLVPzrkTycA7pKb0_lSw7DYAjg=
所谓本地上传,是将用户的本地资源同步到七牛云存储的过程。存放在用户服务器中的数据文件,或者用户桌面计算机中的存档文件等等,都可以通过这种方式,方便地同步到七牛云存储。
七牛云存储提供了下面两种同步工具,可以帮助您轻松地将文件同步到七牛云存储:
Linux,Windows,MacOSX,FreeBSD
手动同步文件/文件夹到七牛云存储
自动同步指定文件夹内的新增或改动文件
当然,本地上传工具只是七牛云存储提供给您所有工具的一部分,更多工具,您可以到查看。
普通客户端直传
更多的用户从事网络应用、网站、移动应用等产品的开发,需要从上传文件。传统的方式是从应用客户端将文件上传至,再由应用服务器将文件传送到云存储服务。这种模式会增加用户应用服务器的处理和带宽压力。同时,还使得用户不得不承担文件的入和出两份流量,增加用户的成本。
为消除这些问题,七牛云存储提供了从应用客户端直接上传文件的模式。出于用户资源安全的考略,访问的签名需要在用户所控制的应用服务器中进行。因此,需要由应用服务器向应用客户端颁发相应的访问授权。应用客户端获得访问请求和授权后,向七牛云存储上传文件。
典型的上传流程如下图所示:
流程简述:
应用客户端向应用服务器 请求上传文件
应用服务器使用相应的或者使用七牛提供的生成上传凭证(UploadToken),并颁发给应用客户端
应用客户端 取得上传许可(UploadToken)后,使用七牛提供的 SDK 或者直接使用 直传文件到最近的存储节点
文件上传成功后,七牛云存储向应用客户端返回上传结果(可包含相应的资源信息)
应用客户端将文件上传结果及相关信息汇报给应用服务器,应用服务器可据此执行后续业务逻辑。
普通上传模型用途广泛。几乎所有的网络应用、网站、在线服务等等,都可以使用普通上传提升服务品质,优化资源配置。
重定向上传
重定向上传是普通客户端直传的一个扩展。允许用户在上传请求中设定一个url(),七牛云存储完成上传之后,将反馈HTTP 301,引导客户端执行自动跳转。这种上传模型主要适用于建立网站的用户。
一个重定向模型典型的上传流程如下图所示:
流程简述:
应用客户端向应用服务器请求上传文件;
应用服务器使用相应的或者使用七牛提供的生成上传凭证(UploadToken),并颁发给应用客户端;
应用客户端取得上传许可(UploadToken)后,使用七牛提供的SDK或者直接使用 直传文件到最近的存储节点;
文件上传成功后,七牛云存储将状态码为301的重定向HTTP Response返回给上传者应用客户端(可包含相应的资源信息);
应用客户端 访问跳转到重定向页面。
回调上传是普通客户端直传的另一种扩展。用户在上传请求中指定回调URL(),七牛云存储在上传完成后以特定的方式调用用户所提供的URL,将上传的结果传送至用户的应用服务器。用户可以在收到回调结果后执行相关的业务逻辑。此后,用户可以将一些数据安置在响应回调的HTTP Response中,反回给七牛云存储。七牛云存储收到响应后,将其中的数据放在HTTP Response中,传递给应用客户端。
这种上传模型对于那些需要在应用客户端和应用服务器之间进行复杂交互的用户非常有用。比如,移动应用的客户终端往往没有很好的网络环境,频繁地进行客户端-服务器之间的交互严重影响使用体验。而使用回调上传模型,客户终端在上传过程中只需一次HTTP访问,即可完成包括服务端通知在内的多个操作。
一个回调上传模型典型的上传流程为:
流程简述:
应用客户端向应用服务器请求上传文件
应用服务器使用相应的或者使用七牛提供的SDK生成上传凭证(UploadToken),并颁发给 应用客户端
应用客户端取得上传许可(UploadToken)后,使用七牛提供的SDK或者直接使用 直传文件到最近的存储节点
文件上传成功后,七牛云存储以HTTP POST方式告知应用服务器上传结果(可包含相应的文件信息)
应用服务器处理完回调的请求后返回相应的结果信息,经七牛云存储中转返回给应用客户端
七牛云存储作为代理,原封不动地将回调应用服务器的返回结果回传给应用客户端
回调模型相对于普通上传更为高级,体现在以下几方面:
应用客户端无需向应用服务器发送通知,全部统一由七牛云存储发送回调,当存在多种终端(比如Web/iOS/Android)都需要上传文件时,每个终端不需要各自处理回调业务逻辑。
加速回调环节,七牛云存储的就近节点能以比应用客户端更优异的网络环境回调应用服务器。
只要文件上传成功,应用服务器将会直接获得通知。即使应用服务器回调失败,应用客户端还是会得到完整的回调数据,可自定义策略进行异步处理。
在这种上传模型中,七牛云存储的服务器不只是作为文件传输的接受和存储者,同时也参与到了其余的业务逻辑中,为应用服务器和应用客户端简化了业务逻辑的实现。同时,利用七牛云存储服务器端的网络优势,可以缩短整个流程的完成时间,并大大提高一次上传流程的成功率。
七牛云存储的用户可以将一个空间设置为两种保护级别。当空间被设置为公有,任何人都可以无需授权访问此空间的内容。而私有空间的内容则无法在没有用户授权的情况下访问。于是便形成两种不同的下载模式:公开资源下载和私有资源下载。
注意: 对于设置的空间,尽管同时设置成公开,空间内的原图也必须使用私有资源下载的方式访问。
公开资源下载
公开资源资源下载,非常简单,就如同下载互联网上任何公开文件和数据那样,客户仅需要构造出资源的URL,然后发出HTTP请求即可。
七牛云存储资源的URL的格式为:
http://&domain&/&key&
其中 &domain& 是资源下载的域名,有两种形式:
七牛二级域名: 以用户的空间名为二级域名,构成资源下载的域名。比如:my-。具体的域名可以在的空间设置的“域名设置”小节中获得;
自定义域名: 用户自有的域名。通过资源空间基本设置中的将自己的域名绑定到用户空间。比如:files.。
&key& 是需要下载的。
构造出资源下载的URL,便可以通过任何HTTP客户端,向七牛云存储发出请求,进行下载。
下图展示了公有资源下载的基本流程:
流程简述:
应用客户端访问文件URL请求下载资源
七牛云存储 响应 应用客户端, 指令距离 应用客户端 物理距离最近的 IO 节点输出文件内容。
私有资源下载
私有资源的下载需要资源的拥有者(七牛云存储用户)向资源的需求者授权,因此需要对下载请求进行验证签名。
私有资源下载所用的URL是在公开资源下载使用的URL基础上增加部分:
http://&domain&/&key&?e=&deadline&&token=&token&
&deadline& 是URL的过期时间。通过设置这个参数,确保URL在一定时间以后失效,以防资源无限访问。
&token& 是。对整个URL进行HMAC-SHA1签名,获得的摘要。七牛云存储将采用相同的签名算法验证该URL是否具备合法的资源访问权限。
下图是司有资源下载的基本流程:
流程简述:
应用客户端 向 应用服务器 请求下载授权
应用服务器 根据
生成 downloadToken, 并颁发给 应用客户端
应用客户端 拿到 downloadToken 后,向 七牛云存储 请求下载文件
七牛云存储 在校验 downloadToken 成功后,输出文件内容。如果校验失败,返错误信息(401 bad token)
用户可以对存储在七牛云存储的资源进行管理和操作。与文件管理类似,七牛云存储资源管理的主要操作有:查看、移动、复制、删除及其对应的批量操作。
查看 (stat)
查看操作用于查看资源的基本信息,包含:文件哈希值、文件大小、媒体类型及上传时间。具体参考
移动 (move)
移动操作允许将一个资源在同一个Bucket或者不同的Bucket之间移动。例如,在bucket1下面有一个名为key1的资源,可以将这个资源key1移动到bucket1下面的key2,也可以将其移动到bucket2下的key2。通过移动操作可以实现文件重命名。具体参考
复制 (copy)
复制操作允许在同一个bucket进行,也可以在两个不同的bucket之间进行。与资源的移动操作相比,复制操作保留原文件,因此会增加用户的存储空间。具体参考
删除 (delete)
删除资源与删除文件类似,但是七牛云存储不提供回收站的功能,因此在删除前请确认待删除的资源确实已经不需要了。具体参考
批量操作 (batch)
除了对单一资源进行操作,还可以对多个资源进行 批量的查看、移动、复制及删除操作。具体参考
列出文件(list)
列出文件操作可以查看bucket里面的所有资源列表,遍历资源。具体参考
七牛云存储不仅仅提供优质的数据存储服务,还提供了多种让用户直接对存储的数据进行云端处理的能力,包括:
常规的图片处理通常放在企业的客户端或服务器端来操作,对接上七牛云存储的图像处理接口后,即可使用丰富的在线云端图片处理服务,大大减少企业带宽消耗,提高开发效率。
七牛云存储提供强大的图片处理能力,包含丰富的图片处理功能:
例如,这里以
作为原图,利用图片处理服务,可以轻松地做到:
(点击可查看图片基本信息)
(点击可查看图片EXIF信息。如果是浏览器查看,请设置浏览器编码为utf-8,否则可能出现乱码)
(点击可查看长宽均为200、质量为原图80%、并被转为png格式的缩略图)
当然还有更复杂高级的功能,比如首先在原图基础上生成一张质量为原图80%的缩略图,随后对这张缩略图进行裁剪,再对裁剪后的小图进行顺时针旋转45度:
(点击查看处理后图片)
除此之外,给一张图片打上水印也是很容易,比如:
文字水印 (右键获得图片链接可查看水印生成的具体规格参数)
图片水印 (右键获得图片链接可查看水印生成的具体规格参数)
这里只是少量的示范,关于图片处理接口详细的说明和使用方法请参考这里:
音视频/流媒体转码及持久化
七牛云存储国内首创了自由度极高的音视频/流媒体转码处理服务,并提供优质的音视频分发网络。
七牛音视频/流媒体处理支持及处理结果持久化:
除了富媒体之外,七牛云存储还提供对特定文档的处理能力,目前提供的是Markdown到HTML文本的转换。
具体使用方法和参数请参考:
什么是管道处理?即一种能够将各种处理功能串联起来形成一种管道操作的能力。这种管道处理的方式使得对一个文件的处理方式不再受限于每个单一文件处理功能。
从视频中提取某一帧生成缩略图
从该缩略图中截取出部分面积的小图
然后基于截取后的图片打水印
如果没有管道处理能力,那么上面三个步骤就只能分开多次操作才能得到最后打好水印的图片。但是管道处理可以让用户仅仅访问那一次就能处理完所有的操作。
具体使用方式详见:
七牛云存储的云端处理具有良好的扩展能力,能够方便地添加各种文件处理功能,因此除了以上比较系统的文件处理功能之外,七牛云存储还提供一些比较实用的功能,比如。
友好别名访问
如果您觉得您使用的文件处理命令过冗长和复杂,我们提供了别名映射的功能,可以为一个特定的处理命令起一个友好的别名,之后的文件处理命令都可以用这个别名进行替换,从而使图片的 URL 变得更加简洁和友好。
比如,您可以为命令thumbnail/!80p/crop/!200x200a150a50/rotate/45起一个别名叫做mystyle,之后就可以使用别名mystyle替换原来那个冗长的命令了。
详细的使用方法请参考相关说明:}

我要回帖

更多关于 恩静女神之泪 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信