4

我在具有 25 个 4gb json 文件(我也使用 -z 选项压缩)的目录上并行运行 gsutil cp 命令(使用 -m 选项)。

gsutil -m cp -z json -R dir_with_4g_chunks gs://my_bucket/

当我运行它时,它将打印到终端,它正在复制除一个文件之外的所有文件。我的意思是它打印每个文件的这些行之一:

Copying file://dir_with_4g_chunks/a_4g_chunk [Content-Type=application/octet-stream]...

一旦其中一个的传输完成,它会说它将复制最后一个文件。

这样做的结果是只有一个文件只有在其他文件之一完成复制时才开始复制,从而显着减慢了进程

我可以使用 -m 选项上传的文件数量是否有限制?这可以在 boto 配置文件中配置吗?

4

2 回答 2

13

我无法在我的 Mac 上找到 .boto 文件(根据上面 jterrace 的回答),而是使用 -o 开关指定了这些值:

gsutil -m -o "Boto:parallel_thread_count=4" cp directory1/* gs://my-bucket/

这似乎控制了传输速率。

于 2015-03-04T08:49:08.910 回答
10

-m 选项的描述中

gsutil 使用多线程和多处理的组合执行指定的操作,使用由 boto 配置文件中设置的 parallel_thread_count 和 parallel_process_count 值确定的线程和处理器数量。您可能需要对这些值进行试验,因为最佳值可能因多种因素而异,包括网络速度、CPU 数量和可用内存。

如果你看一下你的 .boto 文件,你应该会看到这个生成的评论:

# 'parallel_process_count' and 'parallel_thread_count' specify the number
# of OS processes and Python threads, respectively, to use when executing
# operations in parallel. The default settings should work well as configured,
# however, to enhance performance for transfers involving large numbers of
# files, you may experiment with hand tuning these values to optimize
# performance for your particular system configuration.
# MacOS and Windows users should see
# https://github.com/GoogleCloudPlatform/gsutil/issues/77 before attempting
# to experiment with these values.
#parallel_process_count = 12
#parallel_thread_count = 10

我猜您使用的是 Windows 或 Mac,因为非 Linux 机器的默认值是 24 个线程和 1 个进程。这将导致首先复制 24 个文件,然后再复制最后 1 个文件。尝试增加这些值以一次传输所有 25 个文件。

于 2013-06-04T21:21:38.360 回答