2013-06-06 6 views
3

Я пытаюсь выяснить, могу ли я использовать команду gsutil на платформе Windows для загрузки файлов в Google Cloud Storage. У меня есть 6 папок на моем локальном компьютере, которые добавляют к ним новые новые документы PDF. Каждая папка содержит около 2500 файлов. Все файлы в настоящее время находятся в хранилище Google в соответствующих папках. Сейчас я загружаю все новые файлы с помощью Google Cloud Storage Manager. Есть ли способ создать пакетный файл и запланировать его автоматическое выполнение каждую ночь, чтобы он захватывал только те файлы, которые были отсканированы сегодня, и загружает их в Google Storage?Google Cloud Storage загружает файлы, измененные сегодня

Я попробовал этот формат:

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" 

будет загружать все файлы в ведро. Но как я могу только захватить файлы, которые были изменены или сгенерированы сегодня? Есть ли способ сделать это?

ответ

1

Одно решение было бы использовать -n parameter по команде GSUtil ф:

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

Это будет пропускать любые объекты, которые уже существуют на сервере. Вы также можете посмотреть на использование GSUtil-х -m flag и посмотреть, если это ускоряет процесс для вас:

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

Привет, большое вам спасибо за ваш ответ. Я просто попытался запустить одну папку с флагами -m и -n, и это заняло около 2 минут, так что это неплохо. 6 папок займет около 15 минут, поэтому это прямо сейчас может быть решением. Моя единственная проблема заключается в том, что иногда pdf можно редактировать (не часто, но это происходит), и оно сохраняет одно и то же имя, однако это уже не тот файл. Я могу загрузить его вручную, но если кто-то другой может предложить сценарий для загрузки любых файлов, измененных или сгенерированных на сегодняшний день, это будет самое совершенное решение. Если это невозможно, то решение, предлагаемое поводкой, будет достаточным. –

+0

Что-то еще, что вы могли бы сделать, это проверить бит архива в файле. Если он установлен, загрузите файл. После того, как вы загрузили файл, установите бит архива в состояние «выключено». Бит архива будет автоматически установлен на OS операционной системой, если файл будет изменен. Это потребует некоторых сценариев DOS, но решит проблему необходимости повторной загрузки любых измененных файлов. – rein

1

Поскольку у вас есть Python доступны для вас, вы можете написать небольшой скрипт на Python, чтобы найти (время создания ctime) или mtime (время модификации) каждого файла в каталоге, посмотрите, установлена ​​ли эта дата сегодня, и загрузите его, если это так. Вы можете увидеть пример в this question, которые могут быть адаптированы следующим образом:

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.

Смежные вопросы