使用 rsync 和 nc 作为传输层

使用 rsync 和 nc 作为传输层

默认情况下,rsync 使用 ssh 作为传输层。不幸的是,在快速的本地网络下,ssh 非常慢。是否可以将 rsync 与 netcat / nc 一起使用?

我做了一些实验,但对我来说不起作用。我想消除 ssh,因为它是瓶颈。

当然,我想在 Linux 上使用它。

答案1

下面是使用 debian/ubuntu 版本的 nc 的示例(使用命名管道,如中所述)北卡罗来纳州(1)因为 nc 没有-e-c)

在服务器端:

rm -f /tmp/rsyncpipe && mkfifo /tmp/rsyncpipe && cat /tmp/rsyncpipe | (read cmd && eval "$cmd") | nc -l 1243 >/tmp/rsyncpipe

在客户端:

rsync --progress --rsh='bash -c "(echo ""$@""; cat) | nc $0 1243"' <file> 10.142.0.119:<file>

不幸的是,由于 fifo 的原因,即使传输完成后它仍然保持打开状态,因此当它看起来已经完成时(报告时) rsync,您必须在两侧都Ctrl+ 。C--progressto-check=0/n

答案2

我认为那行不通,因为 rsync 需要访问目标文件系统。但是,使用替代 shell 使用--rsh运算符或使用 rsync怎么样daemon mode

相关内容