
Мне поручили перенести работающую библиотеку документов SharePoint в другую библиотеку документов. Поскольку мы хотим свести время простоя к минимуму, я синхронизировал две библиотеки документов на своем ПК с помощью OneDrive и использую robocopy для зеркалирования между двумя локальными копиями. Довольно рутинная работа для сетевых ресурсов.
Однако я заметил, что когда я снова запустил команду зеркалирования, robocopy снова скопировал много файлов. Я мог ожидать несколько изменений, но не тысячи. Кроме того, robocopy помечал файлы как «измененные», что, по моему мнению, является очень необычной причиной копирования для robocopy — это означает, что временная метка не изменилась, но размер файла изменился...
Дальнейшая диагностика показала, что копировались только документы Office, например pptx. Другие типы файлов, такие как PDF и графические файлы, копировались один раз и больше не копировались.
В конце концов я пришел к такому выводу:
- Скопируйте файл в OneDrive, используя (например) cmd.exe copy
- Посмотрите размер файла сразу в OneDrive и он совпадет с исходным размером.
- Подождите, пока OneDrive синхронизирует его, и проверьте размер файла еще раз.
Размер изменился. Вот скрипт PowerShell, который копирует файл, немедленно получает размер, ждет 15 секунд (для синхронизации) и снова получает размер.
$SourceFile = "S:\Temp\Helios\Library\Example.pptx"
$TargetFile = "C:\Users\rob.nicholson\Helios Medical Communications\Library - Documents (unused)\Example.pptx"
Copy-Item $SourceFile $TargetFile
$Length1 = (Get-Item $SourceFile).Length
$Length2 = (Get-Item $TargetFile).Length
Start-Sleep 15
$Length3 = (Get-Item $TargetFile).Length
Write-Host "Orignal size: $Length1"
Write-Host "After copy size: $Length2"
Write-Host "After sync size: $Length3"
Вот что получилось:
Source size: 1996810
After copy size: 1996810
After sync size: 1997141
Может кто-нибудь объяснить, почему размер файла меняется? Другое наблюдение заключается в том, что OneDrive сначала говорит «Загрузка», а затем сразу же говорит «Загрузка» — то есть, когда размер файла меняется.
Делает использование инструментов синхронизации довольно сложным с OneDrive. Само собой разумеется, что Google Drive или Dropbox не имеют той же проблемы.
И последнее замечание: функция OneDrive «По запросу» включена.
решение1
После обсуждения этого вопроса с Microsoft и прочтения статьи, ссылка на которую приведена выше, это "по замыслу", поскольку OneDrive добавляет дополнительные метаданные в документы Office после загрузки, поэтому они загружаются и затем скачиваются немедленно. Таким образом, это изменяет размер файла. Проблема для тех, кто может полагаться на размер файла/контрольные суммы MD5 для обеспечения целостности документа. Похоже, этого не происходит с персональной версией OneDrive, и документы, не относящиеся к Office, не изменяются.