На резюме gsutil кажется для повторной загрузки файлов
Я пытаюсь загрузить данные в Google Cloud Storage с диска с ~3000 файлов общим объемом 1 ТБ. Я использую gsutil cp -R <disk-top-directory> <bucket>
. Мое понимание таково, если gsutil
возобновить/перезапустить, он использует контрольные суммы, чтобы определить, когда файл уже загружен и пропускает его.
похоже, что это не так: похоже, что он возобновляет загрузку сверху и снова заменяет файлы. Когда я бегу последовательно gsutil ls -Rl <bucket/disk-top-directory>
десять минут друг от друга и сравнивать их с diff
, Я вижу, что это те же файлы с теми же размерами, но измененной (более новой) датой. (т. е. согласуется с тем же файлом, который повторно загружается.)
например:
< 404104811 2014-04-08T14:13:44Z gs://my-bucket/disk-top-directory/dir1/dir2/dir3/dir4/dir5/file-20.tsv.bz2
---
> 404104811 2014-04-08T14:43:48Z gs://my-bucket/disk-top-directory/dir1/dir2/dir3/dir4/dir5/file-20.tsv.bz2
машина, которую я использую для чтения диска и передачи файлов, работает под управлением Ubuntu 13.10. Я установил gsutil, используя инструкции pip для Debian и Ubuntu.
я неправильно понимаю, как возобновляемые переводы gsutil должны работать? Если нет, любой диагноз и исправление, чтобы получить правильный возобновить поведение? Заранее спасибо!
2 ответов
вам нужно использовать переключатель-n (No-clobber), чтобы предотвратить повторную загрузку объектов, которые уже существуют в месте назначения.
gsutil cp -Rn <disk-top-directory> <bucket>
из справки (gsutil help cp)
-n No-clobber. When specified, existing files or objects at the
destination will not be overwritten. Any items that are skipped
by this option will be reported as being skipped. This option
will perform an additional HEAD request to check if an item
exists before attempting to upload the data. This will save
retransmitting data, but the additional HTTP requests may make
small object transfers slower and more expensive.
и по этому, при передаче файлов через 2 МБ, gsutil автоматически использует возобновляемый режим передачи.
Если вы открыты для работы с (все еще бета-версией) gsutil v4, эта версия gsutil имеет команду rsync. Вы можете получить это, запустив:
gsutil update gs:/ / предварительная версия / gsutil_4.0beta2pre_minus_m_sugg.смола.gz
пожалуйста, не забудьте прочитать заметки о выпуске перед переключением на этот основной новый выпуск, особенно если вы используете gsutil v3 в скриптах.