在网络不稳定的情况下,连接中断可能导致文件传输失败,使用 ossutil 2.0 的断点续传功能从中断的地方继续上传或下载,从而提升传输效率。在 ossutil 2.0 中,默认情况下不启用断点续传。如果需要使用此功能,请在执行cp命令时指定 --checkpoint-dir
参数来启用断点续传。
前提条件
断点续传机制
断点续传是将文件划分为多个较小的片段进行传输,支持在传输中断时从上次中止的位置继续传输,从而确保数据的完整性和传输的高效性。
启动传输:在传输文件时指定
--checkpoint-dir
参数,启用断点续传功能。信息存储:启用断点续传功能后, ossutil 会将传输进度的关键信息(包括文件名称、大小、
upload id
以及已上传分片等)保存到checkpoint-dir
下的.ucp
文件中中断恢复:如果传输过程因网络问题或其他原因中断,可以重新启动传输。ossutil 会读取
checkpoint-dir
中保存的.ucp
文件,通过之前保存的进度信息来确定哪些分片已经成功传输,哪些分片需要继续传输。继续传输:ossutil 根据已传输分片的信息,将未传输的分片继续传输。
参数说明
参数 | 说明 |
--checkpoint-dir | 用于指定断点续传信息的存储目录。 |
示例
上传单个文件
下面的示例展示了如何使用 ossutil 的 cp
命令将本地文件 upload.rar
上传到指定的 bucket 存储空间。上传操作开始后,将在 your-checkpoint-dir
目录下生成一个 .ucp
文件,用于存储上传进度信息。
ossutil cp upload.rar oss://bucket --checkpoint-dir D:\\your-checkpoint-dir\
如果由于网络中断、磁盘读写异常等原因导致文件上传被中断,您可能会看到如下错误信息:
Error: upload failed, upload id: 1F71C936CF7B423493BC7A664DB3FD82, cause: operation error UploadPart: Put "https://bucket.oss-cn-hangzhou.aliyuncs.com/upload.rar?partNumber=15&uploadId=1F71C936CF7B423493BC7A664DB3FD82": dial tcp: lookup bucket.oss-cn-hangzhou.aliyuncs.com: no such host
在这种情况下,您可以通过执行相同的上传命令,利用 .ucp
文件中保存的信息,继续上传文件:
ossutil cp upload.rar oss://bucket --checkpoint-dir D:\\your-checkpoint-dir\
继续传输开始后,ossutil 会读取存储在 checkpoint-dir
目录下的上传进度信息,从未上传的分片开始上传:
Total 1 objects,6.833 GiB, Upload... done:(0 objects), 3.000%, avg 4.740 MiB/s
批量上传文件
下面的示例展示了如何使用 ossutil 的 cp
命令将本地 local_directory
目录下的文件批量上传至指定的存储空间(bucket)。在此过程中:
-u
参数用于仅上传那些比目标文件更新的源文件。-r
参数则允许递归复制整个目录及其所有子目录中的文件。
上传过程中,进度信息会被存储在 your-checkpoint-dir
目录中生成的一个 .ucp
文件里。
ossutil cp -u -r local_directory oss://bucket --checkpoint-dir D:\\your-checkpoint-dir\
如果由于网络中断、磁盘读写异常等原因导致文件上传被中断,您可能会看到如下错误信息:
Error occurs. See more information in file: /ossutil-2.0.6-beta.01091200-mac-arm64/ossutil_output/ossutil_report_20250122_115545_96481.report
FinishWithError: Total 2 files, 7836503730 B, Upload done:(0 objects) failed:(2 objects, 7836503730 B)
遇到这种情况,您可以再次执行相同的命令,从 .ucp 文件中读取信息,继续上传。
ossutil cp -u -r local_directory oss://bucket --checkpoint-dir D:\\your-checkpoint-dir\
继续传输开始后,ossutil 会读取存储在 checkpoint-dir
目录下的上传进度信息,从未上传的分片开始上传:
Total 2 files,7.298 GiB, Upload... done:(0 objects), 1.645%, avg 17.521 MiB/s