美文网首页
七牛命令行上传&自动生成目录

七牛命令行上传&自动生成目录

作者: 超net | 来源:发表于2016-05-07 22:42 被阅读2863次

    七牛的特性


    • 一般的云盘是双向数据同步空间服务,如何解释呢?举个例子
      • 百度云、微云、360网盘、dropbox 等就是使用双向数据同步空间服务
      • 你在本地增加一个 cnfeat.txt 文件
      • 同步之后,云盘多了一个 cnfeat.txt 文件
      • 你在本地删除一个 cnfeat.txt 文件
      • 同步之后,云盘少了一个 cnfeat.txt 文件
    • 七牛云 不同于以上的 云盘,它是 单向数据同步服务
      • 何为 单向数据同步服务? 简单地来说,你可以想像 七牛云空间 就像是你私人邮箱,你将本地文件发送到你的邮箱,七牛云有了副本,就算本地的文件删除了,七牛云上的文件依然存在,除非你登陆七牛删除。
      • 你在本地增加一个 cnfeat.txt 文件
      • 同步之后,七牛云多了一个 cnfeat.txt 文件
      • 你在本地删除一个 cnfeat.txt 文件
      • 同步之后,七牛云的 cnfeat.txt 文件依然还在!

    准备


    • 本地目录,存放所有相关文件
    ➜  7niu pwd
    /Users/chao/7niu
    

    其中,新建sync文件用于在本地存放资源,目录/home/your/sync_dir

    • 七牛云空间,创建一个空间,空间名后面会用到

    命令行上传


    • 获取命令行上传工具

    qrsync 是一个根据七牛云存储API实现的简易命令行辅助上传同步工具,支持断点续上传,增量同步,它可将用户本地的某目录的文件同步到七牛云存储中,同步或上传几百GB甚至上TB的文件毫无鸭梨。

    qrsync 命令行上传同步工具页面,选择相应的系统,下载qrsync 命令行辅助同步工具,解压压缩包,只用到里面的qrsync文件,放在准备好的目录/Users/chao/7niu

    • 准备配置文件

    用于qrsync读取信息,例如,上传时的认证、本地待同步的文件夹、上传到的七牛空间名

    /Users/chao/7niu中创建一个后缀为.json的配置文件,名称随意,内容如下:

    以下是最简单的必填内容实例:

    {
        "src": "/home/your/sync_dir",
        "dest":"qiniu:access_key=<AccessKey>&secret_key=<SecretKey>&bucket=<Bucket>",
        "debug_level": 1
    }
    

    src是本地存放资源的目录,我是直接在/Users/chao/7niu下创建一个目录存放待上传的资源

    <AccessKey><SecretKey>的获取:登录后,点击右上角账号,选择左侧密钥,在右侧可以看到,直接复制过来

    <Bucket>就是之前创建的空间名称

    填好后的内容如下(用实际值替换<``>和里面的内容):

    {
        "src": "/Users/chao/7niu/sync",
        "dest":"qiniu:access_key=my_access_key&secret_key=my_secret_key&bucket=my_space_name",
        "debug_level": 1
    }
    

    更多选项见官网说明

    放一些文件进去,可以直接在sync中创建文件夹,用于分类,上传时会自动将文件夹名添加到文件名中作为前缀

    • 上传本地指定目录中的资源

    /Users/chao/7niu目录下,运行:

    ./qrsync conf.json

    需要注意,在七牛的空间中,是没有目录的概念的,上传到七牛空间的文件,文件名中可以包含斜杠/,让你感觉像目录结构(比如:a/b/c/d.txt),但它只是看起来像 a 目录下的 b 目录下的 c 目录下的文件 d.txt。实际上,七牛的服务器端是不存在 a、b、c这三个目录的,也没法创建目录。

    通过 url 访问文件

    通过文件的URL访问:

    登陆,选择空间,右上角空间设置,左侧域名设置,可以看到域名

    域名/文件名就是文件的 URL,根据上面对七牛文件名的说明,目录包含在文件名中

    通过 url 访问空间

    直接访问空间的域名会报错

    {"error":"Document not found"}

    有两个步骤需要做:

    因为空间的 html 页面默认是关闭的,需要进入空间,在空间设置基本设置中开启IndexPage

    开启功能后,空间中的index.html(或index.htm)文件将会作为默认首页进行展示。当然不能手动创建、编辑index.html文件,所以我们需要完成接下来的自动生成目录

    自动生成目录


    获取需要的文件

    需要的文件:

    • footer-7niu.html
    • gen4idx.py

    链接: http://pan.baidu.com/s/1i49VE9R 密码: w4gx

    下载解压后,将上面的两个文件放入本地的资源目录/Users/chao/7niu/sync

    自动生成index.html

    在资源目录中,运行命令

    python gen4idx.py ./ footer-7niu.html NULL

    gen4idx.py是生成index.html的脚本

    ./是资源所在的目录,这里是指当前目录

    footer-7niu.htmlindex.html的模板

    NULL,这里表示空,可以指定不将哪些文件显示在页面

    运行后,会在资源目录的每个文件夹下生成一个index.html文件

    遇到的坑


    一开始从qrsync 命令行同步工具下载同步工具,下载后的文件夹名称qiniu-devtools-darwin_amd64-v2.6.20131211,但使用了qrsync 命令行上传同步工具conf.json内容格式。

    结果运行报错:

    ➜  7niu ./qrsync conf.json
    Syncing failed: missing bucket, it must be specified in the configuration file.
    

    后来统一使用qrsync 命令行上传同步工具这个页面下载的同步工具和conf.json内容格式,文件夹名称qiniu-devtools-darwin_amd64-v3.1.20151125.tar,同步成功

    原因:conf.json内容的格式不同,所以读取方式不同,必须匹配

    参考


    最小七牛使用法则

    如何为七牛云生成索引目录?

    日常运维流程

    相关文章

      网友评论

          本文标题:七牛命令行上传&自动生成目录

          本文链接:https://www.haomeiwen.com/subject/lmlsrttx.html