Windows 中驱动器之间的本地和云同步

Windows 中驱动器之间的本地和云同步

于是我看了计算机组织学的书,上面说有一章讲内存层次结构,容量越大越便宜,读写速度就越慢,反之亦然。

因此,我的笔记本电脑中有这些记忆(分层):

  1. RAM(8GB)(最快)
  2. SSD(512GB)(中等)
  3. HDD 5400RPM (1TB)(较慢)
  4. Google Drive(最慢,取决于互联网带宽,但通常最慢。)

所以我期望有这样的映射:

SSD/MyFolderA <-> HDD/SyncFromSSD/MyFolderA <-> GD/SyncFromHDD/MyFolderA

正如书中所提到的,SSD 在执行写入操作时会出现磨损(导致性能和可靠性下降),但不适合读取操作。

尽管如此,为什么 GD 是通过 HDD 而不是 SSD 同步的呢?答案是,它是双向同步。因此,我有可能从 HDD 或 GD 写入文件,但仍然会导致 SSD 磨损。

我有用于本地驱动器之间 GD 同步的实用程序,但不知道如何在 SSD 和 HDD 之间进行本地同步。如何应用这种双向同步架构?

答案1

我将计划从双向同步改为高可用性文件夹,应用冗余 3-2-1 规则备份(存储在 SSD 上、存储在 HDD 上、存储在云端)。因此,这是单向同步。SSD 中的文件夹会自动同步到 HDD 和 GD。

实际上,Windows 中有一个内置功能称为存储空间,但它仅支持磁盘之间的冗余,而不是分区冗余或文件夹冗余。

我使用内置的 Windows 功能来执行此操作,它们robocopy用于同步和任务计划程序用于自动触发同步。

对于第三方应用程序的先决条件,只需安装适用于 Windows 的官方 Google Drive然后用字母挂载G:

不要忘记将 Google Drive 缓存路径更改为具有最大分配单元的 HDD,以节省 SSD 写入耐久性。

设置方法如下:

  1. 创建 SSD 分区,专门用于与驱动器号自动同步答案:并添加新文件夹D:\ssd-同步D:\ssd-sync\robocopy_autosync

  2. 在 HDD 驱动器内创建 VHD 文件映像,其固定大小与 SSD 分区大小相同,然后使用盘符挂载F:并添加新文件夹F:\vhd-同步

为什么不直接将文件夹放在 HDD 驱动器内?例如 E:\hdd-sync?这是因为与将许多 KB 单位的小文件移动到 HDD 驱动器文件夹中相比,VHD 文件映像更容易、更快速地传输以进行备份,而 HDD 驱动器文件夹由于机械部件和低性能 IOPS 而速度较慢。与以 KB 单位读取许多文件相比,如果读取单个单位的大文件,HDD 传输实际上会更快。

建议:在“在 HDD 驱动器内创建 VHD 文件映像”之前,您可以通过分配与 VHD 大小相同的特殊分区来加快 HDD 中的传输速度,分配单元必须设置为最大值,即 2M,而不是默认的 4096,保持文件系统默认为 NTFS。使用盘符挂载埃:并创建具有固定大小和名称的 VHD 文件E:/hdd-to-vhd.vhd。该分区专门用于将 VHD 放入 HDD 驱动器内,簇大小为 2M,访问速度更快。

  1. 创建文件夹G:\我的云端硬盘\高可用性文件夹\gd-sync

  2. 创建 auto_sync.bat并将其保存到D:\ssd-sync\robocopy_autosync\auto_sync.bat

robocopy D:\ssd-sync F:\vhd-sync /E /MIR /TEE /LOG+:D:\ssd-sync\robocopy_autosync\ssd_to_vhd.txt /V
robocopy D:\ssd-sync "G:\My Drive\high-availability-folder\gd-sync" /E /MIR /TEE /LOG+:D:\ssd-sync\robocopy_autosync\ssd_to_gd.txt /V
  1. 然后创建 auto_sync.xml保存, 和导入任务计划程序
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2024-05-09T16:29:45.6364263</Date>
    <Author>LAPTOP-DJH6CVKH\User</Author>
    <URI>\Robocopy\robocopy_autosync</URI>
  </RegistrationInfo>
  <Triggers>
    <LogonTrigger>
      <Repetition>
        <Interval>PT1M</Interval>
        <StopAtDurationEnd>false</StopAtDurationEnd>
      </Repetition>
      <Enabled>true</Enabled>
      <Delay>PT1S</Delay>
    </LogonTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-21-170095007-379780964-48905099-1001</UserId>
      <LogonType>S4U</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>false</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>true</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
    <Priority>7</Priority>
    <RestartOnFailure>
      <Interval>PT1M</Interval>
      <Count>3</Count>
    </RestartOnFailure>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>cmd</Command>
      <Arguments>/C "D:\ssd-sync\robocopy_autosync\auto_sync.bat"</Arguments>
    </Exec>
  </Actions>
</Task>

该调度程序每 1 分钟触发一次,因此基本上每分钟都会同步一次。它执行的操作是运行 auto_sync.bat 脚本。

那么,为什么不与 Google Drive 应用功能同步?因为它不支持文件和文件夹排除。

最后看起来会像这样: 在最后

如果您对资源管理器上显示的太多完整磁盘感到烦恼,您可以隐藏它。我再次强调,这是隐藏,而不是禁用。因此,您仍然可以在资源管理器中以完整路径访问隐藏的驱动器,而不必担心被禁用。这个 #4 选项是我所做的:https://www.easeus.com/partition-manager-software/hide-drives-windows.html

在此处输入图片描述

我仍然可以通过输入完整路径来访问E:/hdd_to_vhd.vhd通过网络等备份到另一个地方。

相关内容