因为需要图床,懒得选择,看了同事博客,发现这图床可以满足要求(容量还行、可以命令行同步等),就先用着吧。
好早前就注册了,但因为认证为标准用户需要拿着身份证拍照,就懒得动了。如今,只要有支付宝账号,即可完成实名认证过程(注:个人实名认证时的「个人网址」随便填即可,例如你的微博/知乎等主页网址都行)
下载与安装
在官网手册 中提到的地址下载对应自己操作系统的版本即可
对 *nix 系统,可 [Shift] + [Command] + G 打开 /usr/local/bin/
,将解压出的 3 个文件拖入该目录下。这样以后就可以直接在命令行中调取它们了。[1]
命令行上传
1. 首先撰写官网手册 中提到的 conf.json 文件
各字段如此获取:
-
access_key
与secret_key
:在新版的「个人面板」->「密钥管理」,旧版的「账户」->「密钥」中 -
bucket
:指定上传空间名 -
sync_dir
:本地要上传的目录,绝对路径形式 -
async_ops
:上传预转参数。若上传音视频需要转码可用该参数,否则保留空即 "" 即可 -
debug_level
:默认即可
注1:官网手册有点旧,未更新,特别是access_key
与secret_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
只检索.log
中filename.file
的记录,而没有用其他字段检查其内容是否有所变动;当用户更新了该文件后,执行同步功能时,文件不会被同步上传,从而云端的文件无法保持在最新的状态。
解决这个问题的思路很简单:
只要删除
filename.file
在<path>
对应的.log
文件中的记录即可
这样,qrsync
将认为 <path>/filename.file
未被推送过,从而会将其推送到云端;发生文件名冲突时,将直接用最新的文件替换掉云端的旧文件。
步骤也很简单:
- 假设待同步文件夹为
<path>
,用户希望更新<path>/filename.file
,CONF_path.json
是文件夹<path>
对应的同步脚本 - 每次执行
qrsync CONF_path.json
时,系统会显示 3 部分提示内容:Syncing ....
/Progress file: ...
/Sync done!
,记录Progress file:
后对应的那个.log
对应的路径(例如:/Users/shangjunsu/.qrsync/abcdefg.log
) - 编辑上述路径下的
.log
文件,删除其中filename.file
对应的记录 - 执行
qrsync CONF_path.json
,待同步完毕即可
命令行下载[2][3]
- 首先根据官方手册提示,GitHub 上下载 qshell
- 如果是 Mac 用户,选择
qshell_darwin_386
或qshell_darwin_amd64
,改名为qshell
,输入 [Shift] + [Command] + G 打开/usr/local/bin/
,把它复制到该文件夹下[1] - 创建一个 python 脚本如下:[4]
qshell account <access_key> <secret_key>` # 这两个字段同上述方法取得 qshell listbucket <bucket> <bucket>.list.txt # 获取名为 <bucket> 的空间内文件列表