文档首页/ 对象存储服务 OBS/ 工具指南/ obsutil/ 常见问题/ Windows操作系统下,下载对象时发现本地和云上对象数量不一致
更新时间:2024-03-20 GMT+08:00

Windows操作系统下,下载对象时发现本地和云上对象数量不一致

如果发现下载后本地文件和文件夹数量之和小于云上对象数量(OBS不区分文件或文件夹,统称为对象),并且当前操作系统是Windows,这个是因为Windows文件系统将文件和目录名称视为不区分大小写,FOO.txt和foo.txt将被视为相同文件;但是在OBS中是区分大小写的,FOO.txt和foo.txt将被视为不同文件。

比如桶中存在以下对象(大小写不一致):

obsutil ls obs://test
Start at 2024-01-17 01:33:37.6378193 +0000 UTC

Listing objects .

Folder list:
obs://test/TEST/
obs://test/test/

Object list:
key                                 LastModified                  Size      StorageClass        ETag      
obs://test/TEST/FOO.txt         2024-01-17T01:33:21Z          493B      standard            "735b0ca5680bfa12d8895702662192ec"

obs://test/test/foo.txt         2024-01-17T01:32:59Z          5B        standard            "5d41402abc4b2a76b9719d911017c592"

Total size of bucket: 498B
Folder number: 2
File number: 2

使用cp命令下载整个桶的对象到Windows的test目录下:

obsutil cp obs://test ./test -r -f

Start at 2024-01-17 01:39:40.4700311 +0000 UTC


Parallel:      5                   Jobs:          5
Threshold:     50.00MB             PartSize:      auto
VerifyLength:  false               VerifyMd5:     false
CheckpointDir: C:\Users\Administrator\.obsutil_checkpoint

Task id: 72c5ac1c-68c0-4206-95d6-18a193bfa77e
OutputDir: C:\Users\Administrator\.obsutil_output
TempFileDir: C:\Users\Administrator\temp

[---------------------------] 100.00% tps:484.98 162.11KB/s 4/4 498B/498B 205ms
Succeed count:      4         Failed count:       0
Succeed bytes:      498B
Metrics [max cost:86 ms, min cost:85 ms, average cost:43.25 ms, average tps:9.13, transferred size:498B]

Task id: 72c5ac1c-68c0-4206-95d6-18a193bfa77e

使用dir /b /s 查看test路径下的所有文件和文件夹以及子目录下的文件,发现只保留了文件夹TEST\和文件TEST\foo.txt。

在该场景下本地文件不一定对应原始OBS文件,在这个例子中,本地TEST\foo.txt 是云上TEST/FOO.txt,而非test/foo.txt,这个因下载成功顺序而导致结果不同。

  1. 针对文件夹,以首次文件夹名下载成功为准,比如TEST/优先 test/下载成功,则最后本地文件夹只有TEST\。
  2. 针对文件,文件名以首次文件名下载成功为准,文件内容以最后一次下载成功为准,比如云上的对象test/foo.txt优先TEST/FOO.txt下载成功,则最后本地文件只有foo.txt(文件名),但是文件内容是FOO.txt的内容。