我在用着同步用于我个人备份,但目前,我有一个 ISP 限制长时间传输。阅读rsync 手册页,我还没有找到选项,但我想知道 rsync 是否有一个设置在传输 X 字节数或保持传输 Y 秒后开始新的传输。
实际上,每隔几分钟拔掉网线然后重新连接也会产生同样的效果,但我不会整天坐在家里。
我对此感到疑惑,作为次要问题,我还想知道 rsync 是否为每个文件启动一个新的文件传输会话或将其数据作为一个连续的流发送。
答案1
该-e
选项可用于指定一个传输程序,而不是默认程序,ssh
以打开另一端的 shell。不过我不知道有什么替代方案可以满足您的要求。
rsync 的工作原理是在远程端运行 rsyncd(rsync 守护进程),并通过一个长流与其进行通信。
答案2
节流的本质是什么?
如果它仅在特定速度的长时间传输中启动,也许您可以使用 rsyncs 速率限制,请参阅手册页:
--bwlimit=KBPS
This option allows you to specify a maximum transfer rate in kilobytes
per second. This option is most effective when using rsync with large
files (several megabytes and up). Due to the nature of rsync transfers,
blocks of data are sent, then if rsync determines the transfer was too
fast, it will wait before sending the next data block. The result is an
average transfer rate equaling the specified limit. A value of zero spec‐
ifies no limit.
或者,您可以将文件分成大小相等的块,然后运行一个脚本,依次传输每个块,并在传输之间休眠。
答案3
rsync 将对所有文件使用相同的数据流。初始同步后,将仅发送文件更改。除非您经常对要备份的目录树进行大量更改,否则我不会担心带宽限制。
Rsync 使用时间戳和校验和的组合来识别哪些文件已更改以及文件在何处已更改。对于日志类型文件,会有一些同步开销,然后传输文件的尾部。当文件发生更改时,带宽利用率应该会有所降低,因为需要在两端读取文件并进行校验和。这些可能足以防止带宽限制的发生。
rsync 备份可以中断,稍后再恢复。然后它将继续备份当前更改,包括之前运行中遗漏的任何更改。如果您要备份的文件很大,频繁中断可能不起作用。您需要让它运行足够长的时间来传输文件。任何基于频繁中断备份的策略都可能失败。
ssh 是加密的,应该不受限制,尽管他们可能会对大数据包进行限制。如果他们对数据包大小进行限制,那么无论你中断进程的频率有多高,你都会受到限制。由于你可能只传输目录结构的一小部分,因此限制仍应让你获得相当快的备份。
答案4
我很奇怪为什么没有人提到编写一个脚本,不时向 rsync 进程发送 SIGSTOP 和 SIGCONT。