我遇到一个问题,gsutil似乎没有遵循文档中描述的行为(至少在Windows中).文件说明:
执行递归目录副本时,将构造对象名称,从递归处理开始镜像源目录结构.例如,命令:
gsutil cp -R dir1/dir2 gs://my_bucket
Run Code Online (Sandbox Code Playgroud)
将创建名为like的对象gs://my_bucket/dir2/a/b/c,假设dir1/dir2包含该文件a/b/c.
但是,在实践中我发现它将创建名为的对象:
gs://my_bucket/dir1/dir2/a/b/c
Run Code Online (Sandbox Code Playgroud)
即,它复制命令中声明的整个目录路径gsutil,而不是如文档中所述"从递归处理点开始"(dir2).
我在这里错过/误解了什么吗?
我按照https://developers.google.com/storage/docs/gspythonlibrary#credentials中的示例进行操作
我通过在开发中选择来创建客户端/秘密对.控制台"创建新的客户端ID","已安装的应用程序","其他".
我的python脚本中有以下代码:
import boto
from gcs_oauth2_boto_plugin.oauth2_helper import SetFallbackClientIdAndSecret
CLIENT_ID = 'my_client_id'
CLIENT_SECRET = 'xxxfoo'
SetFallbackClientIdAndSecret(CLIENT_ID, CLIENT_SECRET)
uri = boto.storage_uri('foobartest2014', 'gs')
header_values = {"x-goog-project-id": proj_id}
uri.create_bucket(headers=header_values)
Run Code Online (Sandbox Code Playgroud)
它失败并出现以下错误:
File "/usr/local/lib/python2.7/dist-packages/boto/storage_uri.py", line 555, in create_bucket
conn = self.connect()
File "/usr/local/lib/python2.7/dist-packages/boto/storage_uri.py", line 140, in connect
**connection_args)
File "/usr/local/lib/python2.7/dist-packages/boto/gs/connection.py", line 47, in __init__
suppress_consec_slashes=suppress_consec_slashes)
File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 190, in __init__
validate_certs=validate_certs, profile_name=profile_name)
File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 572, in __init__
host, config, self.provider, self._required_auth_capability())
File "/usr/local/lib/python2.7/dist-packages/boto/auth.py", line 883, in get_auth_handler
'Check your credentials' % …Run Code Online (Sandbox Code Playgroud) 我想在下一个项目中使用Google云存储。我的目的是跟踪各种网站并收集一些照片。作为,我阅读了gsutil的文档;我可以将文件手动下载到我的服务器,然后使用gsutil将其上传到Google云存储中。
下载和上传文件会在我的服务器中产生大量流量。有没有办法让Google Cloud直接从http下载文件?
我正在谷歌存储桶中托管公开可用的静态资源,我想使用该gsutil rsync命令将我们的本地版本同步到存储桶,从而节省带宽和时间.我们的构建过程的一部分是预先gzip这些资源,但gsutil rsync无法设置Content-Encoding标头.这意味着我们必须运行gsutil rsync,然后立即运行gsutil setmeta以在所有gzip压缩文件类型上设置标头.这使得存储桶处于BAD状态,直到设置了该标头.另一种选择是使用gsutil cp,传递-z选项,但这需要我们每次都重新上传整个目录结构,这包括大量的图像文件和其他浪费时间和带宽的非压缩资源.
是否有原子方法来完成rsync并设置正确的Content-Encoding标头?
使用时我一直看到以下错误 gsutil
ResumableUploadAbortException: Upload complete with 6275 additional bytes left in stream
Run Code Online (Sandbox Code Playgroud)
命令很简单,就像
gsutil cp -r <source_path> gs://<target-bucket>/<target_path>
Run Code Online (Sandbox Code Playgroud)
里面有大约80个文件<source_path>.里面也有嵌套文件夹<source_path>.更改gsutil cp到gsutil -m cp不有所作为.当我在python脚本中运行它和许多其他代码时,这个错误是可重现的.但是,当我在bash中单独运行命令时,它似乎没有任何问题.所以我想知道什么可能是ResumableUploadAbortException的原因,好吗?
调试输出的尾部 gsutil -D -m cp
total_bytes_transferred: 794750002
Total bytes copied=794750002, total elapsed time=7.932 secs (95.55 MiBps)
DEBUG: Exception stack trace:
Traceback (most recent call last):
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 565, in _RunNamedCommandAndHandleExceptions
parallel_operations, perf_trace_token=perf_trace_token)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/command_runner.py", line 280, in RunNamedCommand
return_code = command_inst.RunCommand()
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/cp.py", line 998, in RunCommand
self.op_failure_count, plural_str, …Run Code Online (Sandbox Code Playgroud) 我们一直在使用gsutil -m rsync -r开发和部署盒子与GCS桶同步近两年没有任何问题.桶中有大约85k个物体.
直到最近,这完美地运行了:我们每隔15分左右运行一个部署框 - > GCS rsync,以备份所有新上传的资源,然后每当我们想要刷新本地时再使用GCS - > dev框rsync dev数据(在OSX El Capitan上运行).
然而,在过去的几个月里,GCS-> dev rsync开始膨胀,下载越来越多的图像.
最初我只是觉得"很棒,我们上传了更多的资源",但它的增长速度比数据快,直到今天它似乎正在下载整个85k图像.
我已经仔细检查过我在正确的位置,命令是否正确,路径是否正确等等.对于所有gsutil输出都是通过"复制..."和"正在下载... "消息,好好并行使用我们的100mbps连接,当我find . -type f | wc -l每隔10秒去另一个终端并在目标目录上运行时,它表明每分钟只添加2或3个新文件.我看一下gsutil说它现在正在下载的文件的修改时间,大多数时候它们都已经过时了,很多都没有在一年或更长时间内发生变化.含义:它使用大量的时间和带宽下载所有数据,所有这些都是为了几百个文件.
最近的OSX gsutil版本有什么变化吗?可能有错误吗?我怎么会开始跟踪这个呢?还是报道呢?新闻组gsutil-discuss和gs-discussion已存档,并在谈话gce-discussion是所有关于使用gsutil从GCE实例.
谢谢!
google-cloud-storage gsutil google-cloud-platform osx-elcapitan
我正在将包含130k文件的文件夹同步到Google云端存储.在上传了数千张图片后,我开始为gsutil尝试复制的每个文件收到以下消息:
Your "Oauth 2.0 User Account" credentials are invalid. For more help, see "gsutil help creds", or re-run the gsutil config command (see "gsutil help config").
Failure: unauthorized_client.
Run Code Online (Sandbox Code Playgroud)
我尝试了我能想到的每一个技巧.gcloud auth login像往常一样工作,但它不能解决问题.gcloud auth list显示正确的帐户.gsutil config告诉我它已经不再需要了 - 无论如何我运行它,它按预期工作,但它没有解决问题.删除.boto文件并gsutil config再次运行也没有帮助.
此刻我想可能是我遇到了一些配额限制.我在文档或云控制台上找不到有关文件上传的任何配额的任何参考.为了验证这个理论,我尝试从不同的计算机同步相同的文件.并且它有效,表明没有存储桶或应用配额.但是,在几千个文件之后,第二台计算机开始显示相同的错误消息.
另一个重要说明.最初我尝试使用云控制台复制文件,但速度太慢了.尽管如此,控制台仍能上传超过25,000个文件 - 远远超过gsutil工具.我自己终止了这个上传(24小时内25k非常小的文件太慢......)
有谁知道这是怎么回事?我现在如何恢复凭据?
如果不存在,我想创建一个谷歌存储桶。否则,我想重用存储桶名称。怎么做?它相当于 unix 命令
mkdir -p 目录名
我使用了该命令,但下次运行时我的 shell 脚本崩溃了。
gsutil mb -l 亚洲 gs://my_bucket_name_blah_blah
我正在将一个包含 100 多个重文件(数百 MB)的文件夹传输gsutil到我的谷歌云存储(Nearline)。我在目标文件夹的路径中犯了一个错误。所以我正在寻找一种方法来中止转移。
这是我使用的命令:
python c:\gsutil\gsutil -m cp -r -n berlin gs://bucket/berlin
Run Code Online (Sandbox Code Playgroud)
所以我知道的唯一解决方案(我是新手)就是简单地关闭 CMD。但我想这不是正确的方法,我想知道临时文件(当我关闭 CMD 时正在上传但未完成的文件)会发生什么。
所以这里是我的问题:
我正在尝试gsutil从 GKE 集群中运行的容器中使用独立工具,但我无法让它工作。我相信集群有足够的权限(见下文)。然而,运行
./gsutil ls gs://my-bucket/
Run Code Online (Sandbox Code Playgroud)
产量
ServiceException: 401 Anonymous users does not have storage.objects.list access to bucket my-bucket.
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?我没有.boto文件,因为我认为它不应该是必要的——或者是吗?这是集群和节点池具有的范围列表:
- https://www.googleapis.com/auth/compute
- https://www.googleapis.com/auth/devstorage.full_control
- https://www.googleapis.com/auth/logging.write
- https://www.googleapis.com/auth/monitoring.write
- https://www.googleapis.com/auth/pubsub
- https://www.googleapis.com/auth/servicecontrol
- https://www.googleapis.com/auth/service.management.readonly
- https://www.googleapis.com/auth/trace.append
Run Code Online (Sandbox Code Playgroud)