為什麼 OneDrive 會更改檔案大小?

為什麼 OneDrive 會更改檔案大小?

我的任務是將即時 SharePoint 文檔庫遷移到另一個文件庫。由於我們希望將停機時間降至最低,我已使用 OneDrive 將兩個文件庫同步到我的電腦,並使用 robocopy 在兩個本機副本之間進行鏡像。網路共享的非常常規的東西。

但是,我注意到當我重新運行鏡像命令時,robocopy 再次複製了很多檔案。我可以預期會有一些變化,但不會有數千變化。此外,robocopy 將文件標記為“已更改”,在我看來,這是 robocopy 的一個非常不尋常的複製原因 - 這意味著時間戳記未更改,但文件的大小已更改...

進一步的診斷顯示,只是再次複製了 Office 文檔,例如 pptx。其他文件類型(例如 PDF 和圖形文件)只需複製一次即可。

我最終將其歸結為這一觀察:

  1. 使用(例如)cmd.exe copy 將檔案複製到 OneDrive
  2. 立即在 OneDrive 中查看檔案大小,它與原始大小相符
  3. 等待 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 文件不會更改。

相關內容