Rsync的端口转发

我的服务器上的每个端口都被阻塞,除了222端口是ssh连接。 这台服务器几乎是一个备份服务器,我有我的客户rsync

我通过使用ssh的端口转发-P 222 -L 873:myserver.com:873 )来做到这一点,但是,我只想使用rsync命令来做到这一点。 那可能吗?

这是我一直在尝试:

 sudo rsync -avv --progress --inplace --rsh='ssh -p 222 -L 873:myserver.com:873' . rsync://bt-backup@localhost/backup-bt-backup 

但它不起作用,因为我尝试login到本地主机,而不是myserver.com。

这样做的:

 sudo rsync -avv --progress --inplace --rsh='ssh -p 222 -L 873:myserver.com:873' . rsync://[email protected]/backup-bt-backup 

让我通过SSHlogin,但rsync尝试远程主机,而不是端口已被转发的本地主机

如果服务器运行SSHd,那么你可以直接使用rsync通过SSH

比如我运行类似的东西
rsync -a --inplace some/dir/ [email protected]:/destination/dir/
每时每刻。 无需将rsync作为守护程序运行,也不需要启用端口转发,因为rsync将使用SSH链接启动自身副本,并通过SSH链接处理其与该实例之间的所有同步(并且远程副本将作为连接closures被丢弃,所以你不会结束一堆僵尸进程)。

要通过标准以外的端口进行通信,您只需要给rsync一些额外的信息来说明如何pipe理连接,如下所示:
rsync -a --inplace -e 'ssh -p 222' some/dir/ [email protected]:/destination/dir/

这实际上更安全(所有的rsync通信都受到SSH安全传输的保护,而通过端口转发,所有内容都被简单地发送出去),并且更方便(不需要rsyncd,而且您可以使用基于SSH的密钥validation)

rsync -av –progress –inplace –rsh ='ssh -p8023'somefile user @ host:somedir /

http://www.linuxquestions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/

如果要在远程主机上使用rsyncd(使用/etc/rsyncd.confconfiguration),则只需要端口转发。

使用脚本覆盖ssh。 用以下内容创build一个脚本ssh-connection.sh

 #! /bin/bash ssh -p 222 -L 873:myserver.com:873 -l bt-backup myserver rsync --server --daemon . 

不要忘记给它可执行权限: chmod u+rx ssh-connection.sh

这个脚本故意忽略了这个论点。 它应该用作:

 sudo rsync -avv --progress --inplace --rsh='./ssh-connection.sh' . rsync://localhost/backup-bt-backup 

祝你好运,
JoãoMiguel Neves