注意:我认为我没有很好地解释我在寻找什么。我遇到的问题不是 rsync 选择镜像哪些文件。问题是 rsync 镜像这些相同文件所花的时间更长。
换句话说,在涉及虚拟机之前,同一组文件将在 20 分钟内完成镜像,无论目标是否为空。其他复制方法仍然非常快速。我试图理解为什么 rsync 会受到如此负面影响,而其他方法都不会。它是否开启了额外的分析、加密、压缩或其他处理繁重的事情,只是因为它认为它正在从网络中提取数据,而实际上并非如此?如果是这样,我有什么办法可以关闭它们吗?
编辑1:我从公式中移除了 SSD,只使用 rsync 将文件从 VM 客户机镜像到主机文件系统,这样仍然非常慢。
编辑2:我在网上其他地方发现有人提到跨 SMB 共享的 rsync 速度可能很慢,这是 MacOS 进行文件共享的方式。相反,我打开 SSH 并将 rsync 指向 user@host:/path/to/data 作为源。这样做,完整的 400GB 镜像大约需要 40 分钟。它仍然是原来 20 分钟的两倍,但很多比3个多小时要好得多。
我一直在使用 rsync 将大约 400GB 的数据镜像到外部 Thunderbolt 3 SSD。它混合了一些非常大的文件和大量超小文件,每次运行时都会同步大约 325GB,但由于驱动器速度快,因此只需大约 15 分钟即可完成。我一直在使用的命令是:
rsync -ahPmW --verbose --delete /my/local/directory /my/external/drive/
我最近对我的环境进行了更改,现在这些数据位于运行与主机相同的操作系统 (MacOS Ventura) 的虚拟机中。虚拟机位于本地驱动器上,虚拟机目录包含安装在主机文件系统中的数据。
运行上述rsync
命令将数据从 VM 共享镜像到外部 SSD 时,现在需要3+ 小时而不是 15 分钟,我不明白为什么。我认为这可能与数据目录现在是一个挂载点有关,从技术上讲,它被视为托管在网络上的另一台机器上。虽然我确实预计虚拟化会导致速度稍微变慢,但这么大的时间差似乎太过分了。
我还认为这在某种程度上与特定方法有关,rsync
因为其他复制方法的工作速度要快得多。例如,如果我改用它cp
,它仍然可以在大约 30 分钟内复制整个数据集。或者,如果我在单独的文件浏览器窗口中打开外部 SSD 和已安装的 VM 共享,我可以将最大的文件(~320GB)拖放到任一方向,它将在大约 10-15 分钟内完成。
因为这可能很重要,所以以下是我的设置的详细信息:
主机:MacOS Ventura
虚拟机:MacOS Ventura
VM 软件:VirtualBuddy(我认为是通过 Apple 的虚拟化子系统)
文件共享:在虚拟机中,我已为数据目录启用文件共享。主机可以在“网络”上看到该共享并将其挂载到本地。所有文件系统(包括外部驱动器)都是 APFS 卷。
我觉得既然所有这些都发生在一台计算机上,那么很多提高rsync
网络速度的常规建议(例如打开压缩)实际上并不适用于此。有什么方法可以让我rsync
以当前设置的速度恢复速度?我更喜欢使用它rsync
来备份,因为它可以让我非常轻松地控制我保留多少个版本、我让这些版本保留多长时间等。谢谢!