确定 OneDrive 文件是否通过终端本地同步

Cal*_*unn 10 windows sharepoint command-line onedrive

有没有办法检查 OneDrive 文件是否通过 Windows 终端本地保存?

  • 我想自动检查与项目关联的所有数据文件,而用户无需通过在该文件夹的 OneDrive 同步设置中选择“始终保留在此设备上”来确保所有文件都保存在本地
  • 在文件的属性中,可以查看文件大小和磁盘上的文件大小,但是当我尝试从终端查询文件大小时,它会返回完整的文件大小,即使它没有保存到磁盘(它将是如果我能够查询磁盘上的大小,这是一个可行的解决方案)
    文件属性屏幕截图(大小和磁盘上的大小)

use*_*686 14

我认为可以查询磁盘上的大小,但如果您碰巧遇到稀疏文件、NTFS 压缩文件或其他在磁盘上合法较小的文件,这可能会产生误导。

\n

相反,查询文件属性(与隐藏/只读相同) \xe2\x80\x93 如果文件未本地缓存,它将具有Offline1RecallOnAccess属性(分别为位 0x1000 和 0x400000)。

\n

此类文件似乎也具有未记录的Unpinned属性 (0x100000),但我不确定是否始终存在所有 3 个属性或是否存在某些情况。

\n

同时,“始终保持在该设备上”对应于Pinned属性(0x80000)。临时缓存的文件没有这些属性。

\n

在PowerShell中,(Get-Item $file).Attributes会有这些标志。

\n

如果您使用裸 Cmd(无法访问 PowerShell),该attrib命令将显示“Recall on access”作为标志M,并且(我认为)“Offline”为O。它还允许更改固定/取消固定标志,因此您实际上可以纯粹通过命令行将文件标记为“始终保留”。

\n

这主要是针对 OneDrive 的。我上次查了一下,Dropbox 的工作方式完全不同。

\n
\n

1 Windows 中的该Offline属性比 OneDrive 早 \xe2\x80\x93 年,其起源是“分层存储管理”子系统,该子系统允许将未使用的文件卸载到磁带或类似设备。当时,存储在运行系统上的数据是“在线”的,而存放在柜子里的数据是“离线”的。有了云存储,含义就发生了转变。

\n\n