Google compute engine 如果DRA存储桶';s的内容不可用?

Google compute engine 如果DRA存储桶';s的内容不可用?,google-compute-engine,gsutil,Google Compute Engine,Gsutil,我在一个服务器上,我经常执行命令,将文件上传/下载到bucket或从bucket下载文件 由于文件)可能不可用(因为DRA),因此当遇到这种情况时,gsutil rsync会话期间会发生什么 gsutil是否只需等待不可用的文件可用并完成任务,从而始终从bucket下载所有内容 或者,gsutil是否会退出并警告某个文件不可用,如果是,则确切地说是使用了什么输出(以便我可以编写一个脚本来查找此类消息) 在发现文件不可用的会话中,gsutil命令的返回代码是什么 我需要100%确定我从bucket

我在一个服务器上,我经常执行命令,将文件上传/下载到bucket或从bucket下载文件

由于文件)可能不可用(因为DRA),因此当遇到这种情况时,
gsutil rsync
会话期间会发生什么

  • gsutil
    是否只需等待不可用的文件可用并完成任务,从而始终从bucket下载所有内容
  • 或者,
    gsutil
    是否会退出并警告某个文件不可用,如果是,则确切地说是使用了什么输出(以便我可以编写一个脚本来查找此类消息)
  • 在发现文件不可用的会话中,
    gsutil
    命令的返回代码是什么

  • 我需要100%确定我从bucket下载了所有内容,我猜在下载数百GB的数据时很难跟踪这些内容。如果
    gsutil rsync
    在没有下载不可用文件的情况下完成,是否可以构造一个命令来重试不可用的文件,直到所有这些文件都成功下载?

    我对一个项目进行了一些测试,但无法让
    gsutil
    抛出任何错误。恕我直言,gsutil是在目录级别运行的,它不是在寻找特定的文件

    例如,当您运行时,
    $gsutil rsync local_dir gs://bucket
    ,gsutil不需要任何特定的文件,它只需要获取“local_dir”中的所有内容并将其上载到gs://bucket,因此:

  • gsutil不会等待,它将完成

  • 您不会得到任何错误-我得到的唯一错误是当本地目录或bucket完全丢失时

  • 假设
    local\u dir
    上缺少一个文件,但它在bucket中可用,然后运行
    $gsutil rsync-r local\u dir gs://bucket
    ,那么bucket中不会有任何更改。使用“-d”选项,将删除铲斗侧的文件

  • 建议您只需添加一个
    crontab
    条目,每天或晚上重新运行gstuil命令几次

    另一种方法是创建一个简单的脚本,并将其添加到crontab中,以便每小时左右运行一次。这将检查文件是否存在,如果存在,将运行gsutil命令:

    #!/bin/bash
    FILE=/home/user/test.txt
    
    if [ -f $FILE ];
    then
       echo "file exists..or something"
    else
       gsutil rsync /home/user gs://bucket
    fi
    
    更新:

    我想这可能是你需要的。在~/中,应该有一个.boto文件

    ~$ more .boto | grep max
    # num_retries = <integer value>
    # max_retry_delay = <integer value> 
    
    ~$more.boto| grep max
    #重试次数=
    #最大重试延迟=
    
    取消对这些行的注释并添加您的数字。默认值是6次重试,所以您可以执行24次重试,并在这两次之间放置3600次。这在理论上应该始终保持循环


    希望这有帮助

    我对一个项目做了一些测试,但无法让
    gsutil
    抛出任何错误。恕我直言,gsutil是在目录级别运行的,它不是在寻找特定的文件

    例如,当您运行时,
    $gsutil rsync local_dir gs://bucket
    ,gsutil不需要任何特定的文件,它只需要获取“local_dir”中的所有内容并将其上载到gs://bucket,因此:

  • gsutil不会等待,它将完成

  • 您不会得到任何错误-我得到的唯一错误是当本地目录或bucket完全丢失时

  • 假设
    local\u dir
    上缺少一个文件,但它在bucket中可用,然后运行
    $gsutil rsync-r local\u dir gs://bucket
    ,那么bucket中不会有任何更改。使用“-d”选项,将删除铲斗侧的文件

  • 建议您只需添加一个
    crontab
    条目,每天或晚上重新运行gstuil命令几次

    另一种方法是创建一个简单的脚本,并将其添加到crontab中,以便每小时左右运行一次。这将检查文件是否存在,如果存在,将运行gsutil命令:

    #!/bin/bash
    FILE=/home/user/test.txt
    
    if [ -f $FILE ];
    then
       echo "file exists..or something"
    else
       gsutil rsync /home/user gs://bucket
    fi
    
    更新:

    我想这可能是你需要的。在~/中,应该有一个.boto文件

    ~$ more .boto | grep max
    # num_retries = <integer value>
    # max_retry_delay = <integer value> 
    
    ~$more.boto| grep max
    #重试次数=
    #最大重试延迟=
    
    取消对这些行的注释并添加您的数字。默认值是6次重试,所以您可以执行24次重试,并在这两次之间放置3600次。这在理论上应该始终保持循环


    希望这有帮助

    我对一个项目做了一些测试,但无法让
    gsutil
    抛出任何错误。恕我直言,gsutil是在目录级别运行的,它不是在寻找特定的文件

    例如,当您运行时,
    $gsutil rsync local_dir gs://bucket
    ,gsutil不需要任何特定的文件,它只需要获取“local_dir”中的所有内容并将其上载到gs://bucket,因此:

  • gsutil不会等待,它将完成

  • 您不会得到任何错误-我得到的唯一错误是当本地目录或bucket完全丢失时

  • 假设
    local\u dir
    上缺少一个文件,但它在bucket中可用,然后运行
    $gsutil rsync-r local\u dir gs://bucket
    ,那么bucket中不会有任何更改。使用“-d”选项,将删除铲斗侧的文件

  • 建议您只需添加一个
    crontab
    条目,每天或晚上重新运行gstuil命令几次

    另一种方法是创建一个简单的脚本,并将其添加到crontab中,以便每小时左右运行一次。这将检查文件是否存在,如果存在,将运行gsutil命令:

    #!/bin/bash
    FILE=/home/user/test.txt
    
    if [ -f $FILE ];
    then
       echo "file exists..or something"
    else
       gsutil rsync /home/user gs://bucket
    fi
    
    更新:

    我想这可能是你需要的。在~/中,应该有一个.boto文件

    ~$ more .boto | grep max
    # num_retries = <integer value>
    # max_retry_delay = <integer value> 
    
    ~$more.boto| grep max
    #重试次数=
    #最大重试延迟=
    
    取消对这些行的注释并添加您的数字。默认值是6次重试,所以您可以执行24次重试,并在这两次之间放置3600次。这在理论上应该始终保持循环


    希望这有帮助

    我对一个项目做了一些测试