Linux 环境

说明

使用该工具可实现文件/文件夹上传、下载及删除等操作,上传单个文件无大小限制。该工具依赖Java环境,Java版本要求:JDK 6及以上

安装

nos-cmd-java-0.0.2.tar.gz 解压到一个目录下,如:

$ tar -zxvf nos-cmd-java-0.0.2.tar.gz
$ cd nos-cmd-java-0.0.2/
$ ls
conf  lib  third-party  tool.bat  tool.sh
$ chmod +x tool.sh(linux)

可以看到该目录包含如下文件和文件夹:conf lib logs third-party tool.bat tool.sh

修改配置文件

  1. 添加Accesskey和Secretkey:编辑conf/credentials.properties,改成自己的Accesskey和Secretkey。
  2. 修改NOS地址:编辑conf/host.properties,根据自己的需要修改host的值,即NOS的服务器地址(内网域名或者外网域名), 一般情况无需修改。

使用tool.sh

首次使用需要赋予tool.sh文件可执行权限:$ chmod +x tool.sh

1. 查看有些什么功能


$ ./tool.sh

2. 列出用户的所有桶

命令格式:command -listbuckets

举例:


$ ./tool.sh -listbuckets
Bucket Name:123
Bucket Name:126
Task Success!

当前用户有两个桶,分别为123和126, 输出的Task Success!表示成功,如果输出Task Failed!表示请求失败,失败原因在控制台会打印出来,也可以在./logs/目录下查看,所有命令皆如此。

3. 查看桶的acl属性

命令格式:command -getbucketacl

举例:


./tool.sh -getbucketacl 123
bucket:123 acl:public-read
Task Success!

获取桶123的acl属性,其属性为public-read

4. 设置桶的acl属性

命令格式:command -setbucketacl

举例:

./tool.sh -setbucketacl 123 private
The acl of bucket:123 has changed to private
Task Success!

设置桶123的acl属性,上面将桶123的acl属性设置为private。设置为公开读则填public-read

5. 上传文件

命令格式:command -putfile [-key ] [-replace false(default)|true]

Attention

上传文件,开头不要加'/',例如根目录下的a 目录下的1.txt。则上传路径为 a/1.txt

如果file是一个文件,则可以使用-key来指定存在nos中的objectkey, 如果不指定-key,则objectkey为file字符串。 如果file是一个目录,则会递归的将目录下的所有文件上传到nos,objectkey为 各级子目录.../文件名。 如果指定-replace的值为true,则会覆盖桶内已经存在的同名文件, 如果为false,则桶内如果已经存在同名文件,不会上传该文件。

举例:

$ ./tool.sh -putfile a.txt 123 -key nosa.txt
upload nosa.txt finished
Task Success!

将本地a.txt文件上传到nos,在nos中的objectkey为nosa.txt。上传过程中会打印上传进度,如1%,10%...,完成后打印finished。

$ ./tool.sh -putfile a.txt 123
upload a.txt finished
Task Success!

将本地a.txt文件上传到nos,在nos中的objectkey为a.txt

$ ./tool.sh -putfile conf 123 -replace true
upload log4j.properties finished
upload host.properties finished
upload credentials.properties finished
-----------------------------
Finished files number:3
Failed files number:0
All files in directoryconf have upload finished.
Task Success!

将本地conf文件夹下的文件上传到nos,成功上传log4j.properties,host.properties,credentials.properties三个文件到nos。

6. 上传流或文件

命令格式:command -putstream []

指定了上传文件,否则上传流。

举例:

$ ./tool.sh  -putstream 123 haha.txt
hello,world

输入内容如hello,world再按Ctrl+D结束流,即可将内容上传到桶123的haha.txt文件中

$ ./tool.sh  -putstream 123 haha.txt conf/log4j.properties
upload haha.txt finished
Task Success!

将本地文件conf/log4j.properties上传到桶123的,存在nos中的文件名为haha.txt

7. 查看桶或文件是否存在

命令格式:command -lookup []

不指定则查看桶是否存在,否则查看是否存在桶及桶是否存在某文件

举例:

$ ./tool.sh -lookup 123
bucket 123 exists!
Task Success!

查看是否存在桶123。

$ ./tool.sh -lookup 123 nosa.txt
objectKey nosa.txt exists, size is 12

查看桶123是否存在文件nosa.txt,如果存在,还会返回该文件的长度。

$ ./tool.sh -lookup 123 nosa.txt2
objectKey nosa.txt2 not exists
Task Success!

桶123不存在文件nosa.txt2

8. 列出桶内文件列表

命令格式: command -listobjects [-prefix ] [-marker ] [-maxkeys ]

指定prefix、marker、maxkeys(都是可选)来列出文件列表, maxkeys不指定时默认为100。

举例:

$ ./tool.sh -listobjects 123 -maxkeys 2
ObjectKey:1.jpg    Size:8855    LastModified:Mon Apr 25 16:59:37 CST 2016
ObjectKey:1.mp3    Size:75448    LastModified:Tue Feb 11 17:55:57 CST 2014
next marker: 1.mp3
Task Success!

上例中一次性最多列出桶123内的2个文件,如果要列出下一页的2个文件,可以使用上次返回的next marker值(上例为1.mp3)作为本次的marker参数,如下:

$ ./tool.sh -listobjects 123 -maxkeys 2 -marker 1.mp3
ObjectKey:1.txt    Size:22226    LastModified:Fri Feb 21 15:15:12 CST 2014
ObjectKey:error.gif    Size:730671    LastModified:Tue Mar 22 19:37:25 CST 2016
next marker: error.gif
Task Success!

9. 下载文件

命令格式:command -getobject []

下载文件,显示在标准输出或者存到文件中(指定file)

举例:

$ ./tool.sh -getobject 123 nosa.txt
hello,world
Task Success!

下载桶123中的nosa.txt文件,显示在控制台,nosa.txt对象的内容为hello,world

$ ./tool.sh -getobject 123 nosa.txt nosa_local.txt
Task Success!

下载桶123中的nosa.txt文件,保存到本地nosa_local.txt文件中

10. 将桶内文件下载到本地文件夹

命令格式:command -getobjects -prefix= []

将桶内以为前缀的对象下载到本地目录中,如果本地目录中已存在某个同名文件,由值来决定是否覆盖本地同名文件,值为ture时覆盖,取其他值或者不指定则不覆盖。

举例:

$ ./tool.sh  -getobjects 123 -prefix=1 tmp true
Begin to download...
Success download file:1.gif
Success download file:1.html
\-----------------------------
Finished download files number:2
Failed download files number:0
Task Success!

将桶123内对象名以1开头的对象下载到本地的tmp目录下,如果tmp目录存在同名文件,则覆盖。

$ ./tool.sh  -getobjects 123 -prefix= tmp true
Begin to download...
Success download file:1.gif
Success download file:1.html
Success download file:a
Failed download file:a/b
Failed download file:a/c
\-----------------------------
Finished download files number:3
Failed download files number:2
Task Success!

没有指定-prefix的值,将桶123内所有对象同步到本地tmp文件夹中,上例上有两个文件下载失败了,可以查看日志,其原因是因为有个文件名a,a/b保存在本地目录下时会创建a文件夹,与文件a冲突导致。

11. 重命名对象

命令格式:command -moveobject

当前srcbuc和desbuc必须一致,该命令将srcbuc桶内的srckey对象重命名为deskey

举例:

$ ./tool.sh -moveobject 123 nosa.txt 123 nosb.txt
Task Success!

将桶123的nosa.txt文件重命名为noab.txt

12. 复制对象

命令格式:command -copyobject

举例:

$ ./tool.sh -copyobject  123 nosb.txt 123 nosa.txt
Task Success!

将桶123的nosb.txt文件复制到桶123的nosa.txt文件

13. 删除文件

命令格式:command -deleteobject

举例:

$ ./tool.sh -deleteobject 123 nosb.txt
Task Success!

删除桶123中的nosb.txt对象