Я использую 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)