小工具手册
目录
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
tool.sh 为你在 Linux 环境下的使用命令,tool.bat 为 Windows 环境下的使用命令,tool.sh 和 tool.bat 的使用方法一致,以下以 tool.sh 为例说明各功能点的使用方法
首次使用需要赋予 tool.sh 文件可执行权限:chmod +x tool.sh
查看有些什么功能
$ ./tool.sh
列出用户的所有桶
命令格式:command -listbuckets
举例:
$ ./tool.sh -listbuckets Bucket Name:123 Bucket Name:126 Task Success!
当前用户有两个桶,分别为123和126, 输出的Task Success!表示成功,如果输出Task Failed!表示请求失败,失败原因在控制台会打印出来,也可以在./logs/目录下查看,所有命令皆如此。
查看桶的acl属性
命令格式:command -getbucketacl <bucketname>
举例:
./tool.sh -getbucketacl 123 bucket:123 acl:public-read Task Success!
获取桶 123 的 acl 属性,其属性为 public-read
设置桶的 acl 属性
命令格式:command -setbucketacl <bucketname> <acl>
举例:
./tool.sh -setbucketacl 123 private The acl of bucket:123 has changed to private Task Success!
设置桶 123 的 acl 属性,上面将桶 123 的 acl 属性设置为 private。设置为公开读则 acl 填 public-read
上传文件
命令格式:command -putfile <file> <bucketname> [-key <objectkey>] [-replace false(default)|true]
如果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。
上传流和文件
命令格式:command -putstream <bucketname> <objectkey> [<file>]
指定了<file>上传文件,否则上传流。
举例:
$ ./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
查看桶或者文件是否存在
命令格式:command -lookup <bucketname> [<key>]
不指定<key>则查看桶是否存在,否则查看是否存在桶及桶是否存在某文件
举例:
$ ./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
列出桶内文件列表
命令格式: command -listobjects <bucketname> [-prefix <prefix>] [-marker <marker>] [-maxkeys <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!
下载文件
命令格式:command -getobject <bucket> <key> [<file>]
下载文件,显示在标准输出或者存到文件中(指定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文件中
将桶内文件下载到本地文件夹
命令格式:command -getobjects <bucket> -prefix=<prefix> <directory> [<isCover>]
将桶内以<prefix>为前缀的对象下载到本地<directory>目录中,如果本地目录中已存在某个同名文件,由<isCover>值来决定是否覆盖本地同名文件,<isCover>值为ture时覆盖,取其他值或者不指定<isCover>则不覆盖。
举例:
$ ./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冲突导致。
重命名对象
命令格式:command -moveobject <srcbuc> <srckey> <desbuc> <deskey>
当前srcbuc和desbuc必须一致,该命令将srcbuc桶内的srckey对象重命名为deskey
举例:
$ ./tool.sh -moveobject 123 nosa.txt 123 nosb.txt Task Success!
将桶 123 的 nosa.txt 文件重命名为 noab.txt
复制对象
命令格式:command -copyobject <srcbucket> <srckey> <descbucket> <desckey>
举例:$ ./tool.sh -copyobject 123 nosb.txt 123 nosa.txt Task Success!
将桶123的nosb.txt文件复制到桶123的nosa.txt文件
删除文件
命令格式:command -deleteobject <bucket> <key>
举例:
$ ./tool.sh -deleteobject 123 nosb.txt Task Success!
删除桶123中的nosb.txt对象
最后更新:2017-01-03 10:48:52