通过ssh进行Rsync,还是其他?


10

我一直在尝试在OSX上使用rsync到Linux或Unix机器上,而我对此没有太多控制。我一直在做这样的事情

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/ 

返回的错误是:

bash:rsync:找不到命令rsync:连接意外关闭(到目前为止已收到0个字节)[接收器] rsync错误:在/SourceCache/rsync/rsync-37.3/rsync/io.c(452中未找到远程命令(代码127) )[receiver = 2.6.9]

但是,在阅读了文档之后,我开始认为我实际上需要在远程主机上安装rsync守护程序。

  1. 我必须在远程主机上安装rsync服务器吗?
  2. 免费替代品-GUI或非GUI- 不需要在远程主机上安装任何东西

谢谢!


1
您当前的命令有什么确切的问题?
fideli 2010年

@fideli,对不起,忘记了这一点。现在正在编辑问题
Dan Rosenstark,2010年

1
感谢您提出这个问题,但您可以为它rsync加上标签吗?
安德鲁·格林

Answers:


21

您需要在服务器上使用rsync命令,但不需要运行守护程序。

获取可在服务器上使用的rsync二进制文件,将其放在家里的某个地方,然后将此标志添加到命令行中:--rsync-path=/home/user/path/to/rsync

如果您不想将rsync复制到服务器,则可以使用scp或sshfs。

sshfs user@host ~/sync/user-host
rsync -av ~/local-dir ~/sync/user-host/remote-dir

在这种情况下,rsync将完全在本地运行,但是更改将传播到服务器。


我非常喜欢该解决方案,尤其是因为该服务器是GoDaddy上的廉价托管计划,因此我怀疑是否能够在该服务器上运行rsync。现在+1!
Dan Rosenstark'2

在OSX上安装sshfs的最简单方法是什么?MacFuse还是有更简单的东西?
Dan Rosenstark'2

MacFuse +(MacFusion或sshfs-static-leopard),我认为(我不是OSX用户)
Tobu 2010年

是的,MacFuse做到了。只是sshfs二进制文件的下载页面为您提供了扩展名为.gz的二进制文件。因此,您必须重命名它而不是将其压缩。烦人但现在还可以!谢谢
Dan Rosenstark 2010年

6

您需要在远程主机上具有rsync -不一定是rsync服务器(我相信它无论如何都不会处理ssl连接),但是本地机器上的rsync需要与远程机器上的rsync对话。您正在使用ssh链接两者。

假设远程盒上确实存在rsync,则它不在您登录的ssh shell的默认搜索路径中。根据您在遥控器上的偏好和权限,您可以尝试

  • 使用--rsync-path =选项
  • 更改远程ssh shell的默认PATH
  • 在远程ssh shell中为rsync添加别名
  • 将执行的远程命令更改为rsync的绝对路径

或类似的东西。如果远程主机上不存在rsync作为可执行文件(辅助服务器),则必须添加它。


这是有帮助的,所以+1,但我不知道如何指定起始目录的rsync在Windows方,如果我从Mac上运行它这样的PC:superuser.com/questions/1462861/...
瑞安

1

尽管上面提出了创造性的sshfs解决方案,但在远程主机上不运行rsync守护进程的情况下使用rsync没有什么意义。rsync效率的整体思想是让两个实例通过本地计算校验和,通过网络比较它们,并仅传输那些文件中那些实际不同的部分的实际数据来比较数据集的本地副本。

如果使用sshfs或任何网络安装,则仅是隐藏了它必须从远程主机跨网络复制整个数据集以便本地计算校验和,然后再传输差异的事实。本地删除所有内容并大量删除“ scp -r”会更快,更便宜。


3
不完全正确,因为rsync会检查文件是否按大小和时间戳进行了修改,这比scp'所有文件的效率要高得多。但是确实,文件内的rsync增量更新机制对sshfs没有意义。
Jaap Eldering

0

试试SCP。由于您已经具有ssh访问权限,因此无需在远程主机上安装其他任何东西:)

要将文件从远程主机复制到本地主机,请使用:

# scp -R remoteuser@remotehost:/remote/dir /this/dir/ 

或使用以下命令将文件从本地主机复制到远程主机:

# scp -R /this/dir remoteuser@remotehost:/remote/dir 

1
感谢Lee,SCP很棒,但是它不“同步”吧?
Dan Rosenstark'2

1
它必须是一个小“ r”:scp -r
0x4a6f4672 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.