3

我想弄清楚是否可以cp在 Windows 平台上使用 gsutil 命令将文件上传到 Google Cloud Storage。我的本地计算机上有 6 个文件夹,每天都会向其中添加新的 pdf 文档。每个文件夹包含大约 2,500 个文件。所有文件目前都在各自文件夹中的谷歌存储中。现在我主要使用谷歌云存储管理器上传所有新文件。有没有办法创建一个批处理文件并安排在每晚自动运行它,以便它只抓取今天已扫描的文件并将其上传到 Google 存储?

我试过这种格式:

python c:\gsutil\gsutil cp "E:\PIECE POs\64954.pdf" "gs://dompro/piece pos" 

它上传文件非常好。

这个命令

python c:\gsutil\gsutil cp "E:\PIECE POs\*.pdf" "gs://dompro/piece pos" 

将所有文件上传到存储桶中。但是我如何只抓取今天更改或生成的文件?有没有办法做到这一点?

4

2 回答 2

1

由于您可以使用 Python,您可以编写一个小的 Python 脚本来查找目录中每个文件的ctime(创建时间)或mtime(修改时间),查看该日期是否为今天,如果是则上传。您可以在此问题中看到一个示例,该示例可以进行如下调整:

import datetime
import os

local_path_to_storage_bucket = [
    ('<local-path-1>', 'gs://bucket1'),
    ('<local-path-2>', 'gs://bucket2'),
    # ... add more here as needed
]

today = datetime.date.today()
for local_path, storage_bucket in local_path_to_storage_bucket:
    for filename in os.listdir(local_path):
        ctime = datetime.date.fromtimestamp(os.path.getctime(filename))
        mtime = datetime.date.fromtimestamp(os.path.getmtime(filename))
        if today in (ctime, mtime):
            # Using the 'subprocess' library would be better, but this is
            # simpler to illustrate the example.
            os.system('gsutil cp "%s" "%s"' % (filename, storage_bucket))

或者,考虑直接使用Google Cloud Store Python API,而不是使用gsutil.

于 2014-05-21T21:59:44.050 回答
1

一种解决方案是在 gsutil cp 命令上使用-n 参数:

python c:\gsutil\gsutil cp -n "E:\PIECE POs\*" "gs://dompro/piece pos/"

这将跳过服务器上已经存在的任何对象。您可能还想查看使用 gsutil 的-m 标志,看看是否可以为您加快进程:

python c:\gsutil\gsutil -m cp -n "E:\PIECE POs\*" "gs://dompro/piece pos/"
于 2013-06-06T19:39:27.367 回答