默认情况下,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--progress
to-check=0/n
答案2
我认为那行不通,因为 rsync 需要访问目标文件系统。但是,使用替代 shell 使用--rsh
运算符或使用 rsync怎么样daemon mode
?