我知道您可以使用 arg -z 和 -a 来使用 rsync 进行压缩和存档。
有人能告诉我,如果需要将文件还原到原始文件夹,这些选项是否会对备份文件产生任何影响?
我执行 rsync -avz 后复制回了媒体文件的样本,它们似乎运行良好,但我想确保......
谢谢
答案1
有人能告诉我,如果需要将文件还原到原始文件夹,这些选项是否会对备份文件产生任何影响?
不会,-z
切换不会以任何方式影响写入目标位置的数据,而-a
只是为了确保复制更真实。有关详细信息,请继续阅读...
rsync 的手册页对-z
( --compress
) 开关的描述如下:
-z
,--compress
在传输过程中压缩文件数据
(-a
只是一个简写,用于启用开关,以确保传输完成后目标位置数据与源位置数据完全一致。它对文件元数据有影响,但不会影响文件内容;内容无论您是否使用,复制的文件都将是相同的-a
。
-z
请注意,压缩的描述在转移过程中。这是重要的部分,但如果没有一些背景知识,可能不容易理解。
首先,rsync 使用客户端/服务器架构,即使是本地传输也是如此;一端从源位置读取数据,另一端写入目标位置。两者之间可能存在网络连接,也可能在同一台主机上运行。这种架构允许 rsync 使用完全相同的协议和基本相同的实现来进行本地复制或通过网络复制:唯一需要更改的部分是中间层,它实际上在 rsync 实例之间来回转发数据。
当你的吞吐量受到网络吞吐量的限制时,或者如果你按网络传输的数据量付费,并且可能如果源系统和目标系统上有空闲的 CPU 时间,然后压缩在网络上流动的数据流可以帮助复制过程更快地完成(或花费更少),因为你用一些额外的 CPU 时间来换取更少在网络上流动的数据。
目标 rsync 进程将解压缩数据,然后进一步处理并最终将其写入存储。
由此可见使用 rsync 本地复制文件时启用压缩本质上是在浪费 CPU 时间,因为所涉及的两个 rsync 实例之间的连接比所涉及的任何其他 I/O 都要快得多,而且同一个 CPU 将同时执行数据流的压缩和解压缩。在这种情况下,暂时忽略缓存,数据将从磁盘(慢速)读取到 RAM 中,可能在 RAM 内复制(快速),然后再次写入磁盘(慢速)。慢速组件将占主导地位,在 RAM 内复制较少的数据不会明显加快该过程(并且由于需要额外的处理,很可能会减慢速度,而这本身很可能需要在 RAM 内复制数据)。如果您真的不幸的是,启用压缩将使你超出需要使用交换空间来容纳内存中所有必需数据的限制,这基本上杀表现。
如今,普通 RAM 可以轻松处理每秒数 GB 的持续传输。7200 rpm 旋转磁盘驱动器在连续操作中往往最高可达 120-150 MB/s,而随机文件 I/O(如 rsync 所做的)几乎从不连续,除非出现短暂的突发事件。SSD 在延迟和吞吐量方面表现更好,但仍然数量级比 RAM 慢。因此,在本地复制时,您将始终受到 I/O 限制,并且压缩传输中的数据流最好没什么区别因为仍然读取和写入相同数量的数据,正如我们上面看到的,这是该过程的缓慢部分。