我想让两个不同位置(A 和 B)的两台计算机之间的大型文件集(700 GB)保持同步。这些计算机没有任何网络连接。文件集将首先在一个位置同步。
然后我希望能够处理位置 A 中的各种文件,并将文件系统更改(添加、更改、删除、重命名或移动的文件)的要点传输到小型 8 或 16 GB USB 闪存驱动器。然后将闪存驱动器插入位置 B 的计算机,并在开始其他工作之前在那里应用这些更改。然后在位置 B 重复相同的过程回到位置 A。
显然,系统将受到闪存驱动器大小的限制,而在我的例子中这种情况应该很少发生。目标是保持断开连接的文件集同步,而无需在不同位置之间来回携带整个 700 GB 或依赖网络连接。这些是 Windows 计算机。有什么想法可以实现这一点吗?
答案1
这是一个有点奇怪的想法,但它确实可行。所以我提出这个建议:使用版本控制系统并将补丁导出到 USB。不过这可能取决于您的 VCS 是否能够生成合理高效的二进制补丁。
另外,为什么要使用这么小的 USB 记忆棒?可以购买 750 GB 和 1 TB 的外部 2.5 英寸硬盘。这样您就可以同步整个数据集。
答案2
我对这一切还比较陌生,但我会尝试一下。
我编写了几个批处理文件来“同步”(主要是复制)我拥有的不同硬件。它可以识别我的外部硬盘、闪存驱动器和迷你 SD 存储卡的序列号。
由于我的迷你 SD 卡位于我的手机中,因此我可以使用两个方向复制文件,但由于我不想不断填满这张微型存储卡,因此我在批处理文件中写入了仅在文件运行的最后日期之后同步文件。这使我能够删除任一侧的文件,但仍使用相同的文件夹作为源和目标。
基本上,批处理文件会读取一个包含批处理上次运行日期的 txt 文件。然后,批处理文件会根据 %Last_run_date% 复制在该日期或之后修改的文件,然后调用另一个批处理文件来更新 %Last_run_date%。
@echo off
set /p Last_run_date=<"C:\Users\Owner\Desktop\Stuff I don't use\Shortcuts\Batch Files\lastrun.txt"
@echo.
@echo.
@echo.
@echo Last Update %Last_run_date%
@echo.
@echo Sync card to folder!
xcopy "F:\" "C:\Users\Owner\Desktop\Random\Phone Sync Folder" /s /y /h /r /e /c /i /d:%Last_run_date%
@echo.
@echo.
@echo.
@echo Sync folder to card!
echo Videos
xcopy "C:\Users\Owner\Desktop\Random\Phone Sync Folder\Video" "F:\Video" /s /y /h /r /d:%Last_run_date% /e /c /i
echo Audio
xcopy "C:\Users\Owner\Desktop\Random\Phone Sync Folder\Audio" "F:\Audio" /s /y /h /r /d:%Last_run_date% /e /c /i
echo Pictures
xcopy "C:\Users\Owner\Desktop\Random\Phone Sync Folder\Picture" "F:\Picture" /s /y /h /r /d:%Last_run_date% /e /c /i
@echo.
@echo Update LastRun.txt
"C:\Users\Owner\Desktop\Stuff I don't use\Shortcuts\Batch Files\lastrun.bat - Shortcut.lnk"
@echo off
set /p Last_run_date=<"C:\Users\Owner\Desktop\Stuff I don't use\Shortcuts\Batch Files\lastrun.txt"
echo.
echo Current Update %Last_run_date%
这是 lastrun.bat。
@echo off
set DD=%date:~7,2%
set MM=%date:~4,2%
set YY=%date:~10,4%
echo %MM%-%DD%-%YY%>"C:\Users\Owner\Desktop\Stuff I don't use\Shortcuts\Batch Files\lastrun.txt"
最后,我还有另一个批处理文件,用于同步我用于学校的闪存驱动器之一。它会删除并重建打印文件夹目录,这样我就不会不断地填满闪存驱动器
echo Empty Print Folder (F)
rmdir /s /q "F:\Stuff that needs printed"
mkdir "F:\Stuff that needs printed"
echo Sync to F Drive
xcopy "C:\Users\Owner\Desktop\Random\4GB Flashdrive" "F:" /s /y /h /r /d /e /c /i
另外,请注意,如果其中任何一个看起来很熟悉,那么其中一些代码是我通过 Google 找到的,然后我重新排列以满足我的需要。
答案3
在 USB 上创建一组与要同步的硬盘目录相对应的目录,然后使用无数免费目录同步产品之一。
我最喜欢的是SyncBack 免费软件对于同步作业,有一个选项“忽略过去 [N] 天内未修改/创建的文件”。
将 N 设置为几天前,并创建一个批处理文件以在 USB 写满后清理它。