小樱 发表于 2018/8/26 03:29

Linux下SSH用qshell命令上传文件到七牛云存储详解,使用Shell脚本实现数据的自动上传下载Bucket对象存储

安装qshell
yum -y install unzip wget
wget http://devtools.qiniu.com/qshell-v2.2.0.zip
unzip qshell-*.zip qshell-linux-x64
mv qshell-linux-x64 /home
cd /home
chmod +x qshell-linux-x64
mv qshell-linux-x64 qshell


测试运行
./qshell -h

个人中心找到AK和SK(AccessKey/SecretKey)
https://portal.qiniu.com/user/key

设置ak和sk信息
./qshell account ak sk

测试是否成功
./qshell account

输出:
AccessKey: ELUs327kxVPJrGCXqWae9yioc0xYZyrIpbM6Wh6x
SecretKey: LVzZY2SqOQ_I_kM1n00ygACVBArDvOWtiLkDtKiw


到此安装完毕。

七牛云存储免费提供1GB存储空间和10GB每日外网流量,实名后可以提升免费空间到10G。
付费空间的话,10G=1元1个月,30G=3元一个月,华南地区打折会优惠点,30G=2.7元一个月。
付费用户注册地址:https://portal.qiniu.com/signup?code=3lj7iypa0m9n6




上传文件
fput命令用来以multipart/form-data的表单方式上传一个文件。适合于中小型文件的上传,一般建议如果文件大小超过100MB的话,都使用分片上传。
格式
qshell fput <Bucket> <RemoteFile> <LocalFile>
参数名称      描述                                                            可选参数
Bucket      七牛空间名称,可以为公开空间或私有空间                  必选
RemoteFile      文件保存在七牛空间的名称                                  必选
LocalFile      本地文件的路径                                                      必选
Overwrite      是否覆盖空间已有文件,默认为false                        Y
MimeType      指定文件的MimeType                                             Y
UpHost      上传入口地址,默认为空间所在机房的上传加速域名      Y
FileType      文件存储类型,默认为0(标准存储) 1为低频存储          Y

关于 UpHost ,这个是用来指定上传所使用的入口域名。在不指定的情况下,程序会自动根据空间来获取其所在的机房,并选择对应的上传加速域名作为上传域名。对于七牛的几大机房,默认的上传加速域名和其他源站域名分别如下表。
机房      上传加速域名                           源站上传域名                     https上传加速域名                  https上传源站域名
华东      http://upload.qiniu.com            http://up.qiniu.com             https://upload.qbox.me            https://up.qbox.me
华北      http://upload-z1.qiniu.com      http://up-z1.qiniu.com      https://upload-z1.qbox.me      https://up-z1.qbox.me
华南      http://upload-z2.qiniu.com      http://up-z2.qiniu.com      https://upload-z2.qbox.me      https://up-z2.qbox.me
北美      http://upload-na0.qiniu.com      http://up-na0.qiniu.com      https://upload-na0.qbox.me      https://up-na0.qbox.me
当自行指定上传UpHost的时候,请根据空间所在机房,从上面的表中选择正确的上传CDN加速入口域名。

示例
1.上传本地文件lxzPV.mp4到空间test里面。
./qshell fput test lxzPV.mp4 lxzPV.mp4

输出:
Uploading lxzPV.mp4 => test : lxzPV.mp4 ...
Progress: 100%
Put file lxzPV.mp4 => test : lxzPV.mp4 success!
Hash: lvdkf6WttSbD00impJTDmWhawUYV
Fsize: 36622683 ( 34.93 MB )
MimeType: video/mp4
Last time: 15.62 s, Average Speed: 2345.1 KB/s

2.上传本地文件lxzPV.mp4到空间test里面,带前缀video/,并且指定MimeType参数为video/x-flv,并且指定上传域名华东源站上传不使用CDN,覆盖源文件并且使用低频存储。
./qshell fput test video/lxzPV.mp4 lxzPV.mp4 video/x-flv true 1 https://up.qiniu.com/


rput命令使用七牛支持的分片上传的方式来上传一个文件,一般文件大小较大的情况下,可以使用分片上传来有效地保证文件上传的成功。
格式
qshell rput <Bucket> <RemoteFile> <LocalFile>
示例
1.上传本地文件/Users/jemy/Documents/qiniu.mp4到空间if-pbl里面。

./qshell rput test lxzPV.mp4 lxzPV.mp4
输出:
Uploading lxzPV.mp4 => test : lxzPV.mp4 ...
Progress: 100.00%
Put file lxzPV.mp4 => test : lxzPV.mp4 success!
Hash: lvdkf6WttSbD00impJTDmWhawUYV
Fsize: 36622683 ( 34.93 MB )
MimeType: video/mp4
Last time: 10.75 s, Average Speed: 3407.9 KB/s


注:rput的其他使用方法和fput一致,一般用于大文件的上传。




列举七牛空间里面的所有文件
格式
qshell listbucket [-marker <Marker>] <Bucket> [<Prefix>] <ListBucketResultFile>
上面的命令中,可选的场景有三种:
(1)获取空间中所有的文件列表,这种情况下,可以直接指定 Bucket 参数和结果保存文件参数 ListBucketResultFile 即可。
qshell listbucket <Bucket> <ListBucketResultFile>
(2)获取空间中指定前缀的文件列表,这种情况下,除了指定(1)中的参数外,还需要指定 Prefix 参数。
qshell listbucket <Bucket> <Prefix> <ListBucketResultFile>
(3)该场景主要用在空间中文件列表较多导致大量列举操作超时或者是列举过程中网络异常导致列举操作失败的时候,这个时候列举失败的时候,程序会输出当时失败的marker,如果我们希望接着上一次的列举进度继续列举,那么可以在运行命令的时候,额外指定选项marker。
qshell listbucket -marker <Marker> <Bucket> <ListBucketResultFile>

参数
参数名        描述                                                                                                                                                                                                          可选参数
Bucket        空间名称,可以为私有空间或者公开空间名称                                                                                                                                                      必选
Prefix        七牛空间中文件名的前缀,该参数为可选参数,如果不指定则获取空间中所有的文件列表                                                                                              Y
ListBucketResultFile        获取的文件列表保存在本地的文件名,如果该参数指定为stdout,则会把结果输出到终端,一般可用于获取小规模文件列表测试使用           必选

示例
1.获取空间test里面的所有文件列表:
./qshell listbucket test test.list.txt
结果
41982247_01.jpg        948234        FokUV4denUM3KR229Jy1iKOAlzS6        15352271837040356        image/jpeg        0        0       
upload_info.txt        2164525        FsuA_WZFl1THsJuEkfvAHFXtCAOu        15352271899333150        text/plain        0        0       
video/lxzPV.mp4        36622683        lvdkf6WttSbD00impJTDmWhawUYV        15352271750775303        video/mp4        0        0

2.获取空间test里面的以video/为前缀的文件列表:
./qshell listbucket test 'video/' test.prefix.list.txt




删除文件
delete 命令用来从七牛的空间里面删除一个文件。
格式
qshell delete <Bucket> <RemoteFile>
参数
参数名        描述
Bucket        空间名称,可以为公开空间或者私有空间
RemoteFile    空间中的文件名

示例
删除空间test里面的视频qiniu.mp4
./qshell delete test qiniu.mp4


batchdelete命令用来根据一个七牛空间中的文件名列表来批量删除空间中的这些文件。
格式
qshell batchdelete [-force] <Bucket> <KeyListFile>

参数
参数名        描述
Bucket        空间名,可以为公开空间或私有空间
KeyListFile        文件列表文件,该列表文件只要保证第一列是文件名即可,每个列用\t分隔,可以直接使用listbucket的结果。
force选项
该选项控制工具的默认行为。默认情况下,对于批量操作,工具会要求使用者输入一个验证码,确认下要进行批量文件操作了,避免操作失误的发生。如果不需要这个验证码的提示过程,可以使用-force选项。

示例
1.在test空间中指定要的删除的文件列表test.prefix.list.txt进行删除:
video/lxzPV.mp4
video/AYjmD.mp4
video/MN14w.mp4
./qshell batchdelete test test.prefix.list.txt

2.删除空间test中的所有文件:
./qshell listbucket test test.list.txt
./qshell batchdelete -force test test.list.txt




帖子原帖永久链接:http://bbs.itzmx.com/thread-87548-1-1.html



页: [1]
查看完整版本: Linux下SSH用qshell命令上传文件到七牛云存储详解,使用Shell脚本实现数据的自动上传下载Bucket对象存储