Назад | Перейти на главную страницу

gsutil «Копирование mtime из src в dst» с перемещением исходных файлов?

Я использую gsutil для резервного копирования фотографий из специального ящика в хранилище Google.

Недавно я переместил все свои фотографии из этого специального ящика в новый специальный ящик. Я обязательно использовал соответствующие архивные флаги rsync, чтобы избежать изменения файлов mtimes.

Я только что впервые запустил gsutil в новом ящике, ушел и ожидал, что он переместит только НОВЫЕ файлы, резервные копии которых ранее не создавались.

gsutil -m rsync -r /originals/. gs://my-bucket

Вместо этого я вернулся и нашел результат, состоящий из сотен строк

Copying mtime from src to dst for gs://my-bucket/photo123456.jpg

Я вижу (через ls -ltu), что время последнего доступа было затронуто, когда я переместил файлы, но измененное время правильно не изменилось, и в этом случае отображается дата с 2010 года.

Я пока отменил работу. Что я сделал не так? Могу ли я исправить это, чтобы он не пытался сделать это для всех 3 миллионов файлов?

При дальнейшем осмотре я вижу, что резервные копии файлов в nearline имеют дату изменения 2015 года, когда они были изначально созданы. Те, которые создали сообщение сегодня, теперь имеют сегодняшнюю дату.

Почему так могло случиться? Задание резервного копирования выполнялось 1000 раз с момента первоначального резервного копирования файлов без перезаписи времени изменения файлов, так почему же сейчас оно не удовлетворено?

Интересно, могло ли это быть потому, что я сейчас использую более новую версию gsutil?

В этот Вопрос о переполнении стека с использованием -c вариант с gsutil rsync помогло. Этот вариант:

Заставляет команду rsync вычислять и сравнивать контрольные суммы (вместо сравнения mtime) для файлов, если размер источника и назначения совпадают. Эта опция увеличивает количество операций ввода-вывода на локальном диске и время выполнения, если src_url или dst_url находятся в локальной файловой системе.

(Источник: Документы GCP)