美文网首页
七牛笔记(更新中…)

七牛笔记(更新中…)

作者: 苏尚君 | 来源:发表于2016-04-15 00:51 被阅读76次

    因为需要图床,懒得选择,看了同事博客,发现这图床可以满足要求(容量还行、可以命令行同步等),就先用着吧。

    好早前就注册了,但因为认证为标准用户需要拿着身份证拍照,就懒得动了。如今,只要有支付宝账号,即可完成实名认证过程(注:个人实名认证时的「个人网址」随便填即可,例如你的微博/知乎等主页网址都行

    下载与安装

    官网手册 中提到的地址下载对应自己操作系统的版本即可

    对 *nix 系统,可 [Shift] + [Command] + G 打开 /usr/local/bin/,将解压出的 3 个文件拖入该目录下。这样以后就可以直接在命令行中调取它们了。[1]

    命令行上传

    1. 首先撰写官网手册 中提到的 conf.json 文件

    各字段如此获取:

    • access_keysecret_key:在新版的「个人面板」->「密钥管理」,旧版的「账户」->「密钥」中
    • bucket:指定上传空间名
    • sync_dir:本地要上传的目录,绝对路径形式
    • async_ops:上传预转参数。若上传音视频需要转码可用该参数,否则保留空即 "" 即可
    • debug_level:默认即可

    注1:官网手册有点旧,未更新,特别是access_keysecret_key字段如何获取,仍为旧链接;
    注2:如上各字段均,除了最后的debug_level为数字,其余均为字符串,应包含于英文双引号内

    2. 命令行执行 qrsync /<your conf.json path>/conf.json 即可完成同步

    3. 如何更新文件

    文件夹下每一个文件 filename.file

    七牛在本地是用一个以 .log 为后缀名的文件记录同步进程的,本地每个独立的同步文件夹<path>均对应本地一个 .log 记录,<path>下的任一文件 filename.file 在首次同步时都将在该 <path> 对应的 .log 文件中生成一条记录;每次执行 qrsync 时,在正式向云端推送前都会由 qrsync 自动检查该 .log 文件中是否存在 filename.file 的记录。只要记录中已经有文件 <path>/filename.file 的同步记录,那么文件 filename.file 便不会被推送到云端。

    这种设计在某种程度上避免了重复上传,但为希望向云端推送文件最近更新的用户造成了一个问题:

    qrsync 只检索 .logfilename.file 的记录,而没有用其他字段检查其内容是否有所变动;当用户更新了该文件后,执行同步功能时,文件不会被同步上传,从而云端的文件无法保持在最新的状态。

    解决这个问题的思路很简单:

    只要删除 filename.file<path> 对应的 .log 文件中的记录即可

    这样,qrsync 将认为 <path>/filename.file 未被推送过,从而会将其推送到云端;发生文件名冲突时,将直接用最新的文件替换掉云端的旧文件。

    步骤也很简单:

    1. 假设待同步文件夹为 <path>,用户希望更新 <path>/filename.fileCONF_path.json 是文件夹 <path> 对应的同步脚本
    2. 每次执行 qrsync CONF_path.json 时,系统会显示 3 部分提示内容:Syncing ..../Progress file: .../Sync done!,记录 Progress file:后对应的那个 .log 对应的路径(例如:/Users/shangjunsu/.qrsync/abcdefg.log
    3. 编辑上述路径下的 .log 文件,删除其中 filename.file 对应的记录
    4. 执行 qrsync CONF_path.json,待同步完毕即可

    命令行下载[2][3]

    1. 首先根据官方手册提示,GitHub 上下载 qshell
    2. 如果是 Mac 用户,选择 qshell_darwin_386qshell_darwin_amd64,改名为 qshell,输入 [Shift] + [Command] + G 打开 /usr/local/bin/,把它复制到该文件夹下[1]
    3. 创建一个 python 脚本如下:[4]
      qshell account <access_key> <secret_key>` # 这两个字段同上述方法取得
      qshell listbucket <bucket> <bucket>.list.txt # 获取名为 <bucket> 的空间内文件列表
      
      

    参考资料


    1. 如何使用七牛云做为图床?

    2. qshell 命令行工具

    3. qshell

    4. qshell wiki - listbucket

    相关文章

      网友评论

          本文标题:七牛笔记(更新中…)

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