抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

目标

将本地文件同步到阿里云 OSS

步骤

  1. 下载命令行工具 ossutil
  2. 解压文件后可以看到当前目录有 ossutil.exeossutil64.exe 两个文件,分别对应 32 位和 64 位系统。

配置文件

./ossutil config -e endpoint -i your_id -k your_secret

参数说明:

-e, –endpoint
ossutil工具的基本endpoint配置,注意其必须为一个二级域名。
-i, –access-key-id
访问oss使用的AccessKeyID。
-k, –access-key-secret
访问oss使用的AccessKeySecret。
-L CH, –language=CH
设置ossutil工具的语言,默认值:CH,取值范围:CH/EN,若设置成”CH”,请确保您的系统编码为UTF-8。

ossutil账号配置.jpg

需求Ⅰ

将本机 D:\FFSFiles\AAAAA 目录文件同步到OSS bucket: oss://ffs-document/AAAAA

新建一个批处理文件 SycOSS.bat ,内容如下:

1
call ossutil64.exe cp -r -f D:\FFSFiles\AAAAA oss://ffs-document/AAAAA -j 10 --maxupspeed 5120 --loglevel=info -c C:\Zerow\FSSSync\.ossutilconfig  --snapshot-path=C:\Zerow\FSSSync\uploadLog --meta X-oss-Storage-Class:IA

参数说明:

call:bat 调用程序
ossutil64.exe:64位系统
cp:上传/下载/拷贝文件
-r:拷贝文件夹,对大文件默认使用分片上传并可进行断点续传
-f:默认强制上传,当目标端存在同名文件时,不询问,直接覆盖。
D:\FFSFiles\AAAAA:待同步的本地文件夹
oss://ffs-document/AAAAA:目标 Bucket
-j:多个文件上传/下载/拷贝时,并发数
–maxupspeed:上传文件/文件夹时,设定上传时的最高速度,单位为 KB/s,缺省为 0(不限速)
–loglevel:日志级别,默认为空,表示不输出日志文件,取值: info|debug,info 输出提示信息日志,debug 输出详细信息日志(包括 http 请求和响应信息)
-c:ossutil 工具的配置文件路径,ossutil 启动时从配置文件读取配置
–snapshot-path:指定文件上传的快照信息目录,根据快照信息进行增量上传
–meta:设置 object 的 meta 为[header:value#header:value…]

需求Ⅱ

如果在同一级父目录下有很多兄弟目录需要同步呢,比如 D:\FFSFiles\AAAAAD:\FFSFiles\BBBBBD:\FFSFiles\CCCCC 等等,批处理文件内容就要改成这样:

1
2
3
4
5
ossutil64.exe cp -r -f D:\FFSFiles\AAAAA oss://ffs-document/AAAAA -j 10 --maxupspeed 5120 --loglevel=info -c C:\Zerow\FSSSync\.ossutilconfig  --snapshot-path=C:\Zerow\FSSSync\uploadLog --meta X-oss-Storage-Class:IA

ossutil64.exe cp -r -f D:\FFSFiles\BBBBB oss://ffs-document/BBBBB -j 10 --maxupspeed 5120 --loglevel=info -c C:\Zerow\FSSSync\.ossutilconfig --snapshot-path=C:\Zerow\FSSSync\uploadLog --meta X-oss-Storage-Class:IA

ossutil64.exe cp -r -f D:\FFSFiles\CCCCC oss://ffs-document/CCCCC -j 10 --maxupspeed 5120 --loglevel=info -c C:\Zerow\FSSSync\.ossutilconfig --snapshot-path=C:\Zerow\FSSSync\uploadLog --meta X-oss-Storage-Class:IA

如果有很多个目录需要同步呢,DDDDD、EEEEE、FFFFF、GGGGG……岂不是要写很多行 ossutil64.exe 执行命令?在批处理中,对于执行重复的命令,只是部分参数不同的时候一样可以使用循环来实现。

继续修改批处理内容:

1
2
3
4
set upDir=AAAAA,BBBBB,CCCCC,DDDDD,EEEEE,FFFFF,GGGGG
for %%I in (%upDir%) do (
ossutil64.exe cp -r -f D:\FFSFiles\%%I oss://ffs-document/%%I -j 10 --maxupspeed 5120 --loglevel=info -c C:\Zerow\FSSSync\.ossutilconfig --snapshot-path=C:\Zerow\FSSSync\uploadLog --meta X-oss-Storage-Class:IA
)

参数说明:

set:设置一个变量,使用英文逗号(,)隔开
for in do:批处理for循环

参考

批处理新手入门导读

评论