如何使用ssh将代码同步到远程计算机?

时间:2009-03-19 12:23:01

标签: synchronization development-environment

对于我正在学习的当前课程,我们使用远程计算机来运行我们的代码。

我在MacBook上本地编码,我正在寻找一种在群集上保持本地代码最新的好方法。

我这样做的方法是打开一个终端来运行SCP来复制目录,另一个终端通过SSH连接到集群中来制作和运行我的代码。

这对我来说似乎不太理想。有没有办法可以在修改文件时自动将文件发送到集群?

或者我是否坚持使用单行命令来移动所有内容?

5 个答案:

答案 0 :(得分:15)

如果你可以使用rsync,那可能是最好的方法。

使用sshfs(融合)挂载远程文件夹是一种选择吗?您可以直接编辑文件,也可以使用rsync,unison或任何文件夹到文件夹同步工具。

答案 1 :(得分:13)

除了分布式版本控制之外,您最好的选择是在ssh上使用rsync。我通过在每个机器上执行以下操作来保持几台机器同步:

rsync -urltv --delete -e ssh /src.dir user@othermachine:/src.dir

你提到使用MacBook - rsync是在Mac OS X上。据我所知,它不需要额外安装。而rsync的优点在于它寻找修改并且仅复制修改过的文件。它没有像分布式版本控制系统那样合并同时修改,但是如果你像我一样在笔记本电脑上做一些工作然后在桌面上工作,rsync是发送所有已更改文件的最佳方式切换模式时(和仅更改的文件)从一个到另一个。

注意:此处使用的rsync选项是:

  • -u, - 更新跳过接收器上较新的文件
  • -r, - recursive recurse into directories
  • -l, - 将符号链接复制为符号链接
  • -t, - 保存修改时间
  • -v, - verbose增加详细程度
  • --delete从目录中删除无关文件,充当--delete-during

最后,-e是允许您指定远程shell的选项,在本例中为ssh

答案 2 :(得分:4)

我知道这不是你知道的答案,但你可以设置一个SVN或CVS服务器,这将更加容易。

否则我会选择rsync。

答案 3 :(得分:1)

甚至比rsync更好的是Unison file synchronizer,这将允许您在任一端进行更改,并将检测并帮助解决任何冲突。它适用于ssh。

答案 4 :(得分:0)

可能不是你想要的,但你应该看看像git这样的DSCM:

  1. 在远程服务器中创建存储库。
  2. 使用ssh将其克隆到您的开发计算机。
  3. 添加/修改代码
  4. 使用commit和push(再次,通过ssh)合并更改。