对于我正在学习的当前课程,我们使用远程计算机来运行我们的代码。
我在MacBook上本地编码,我正在寻找一种在群集上保持本地代码最新的好方法。
我这样做的方法是打开一个终端来运行SCP来复制目录,另一个终端通过SSH连接到集群中来制作和运行我的代码。
这对我来说似乎不太理想。有没有办法可以在修改文件时自动将文件发送到集群?
或者我是否坚持使用单行命令来移动所有内容?
答案 0 :(得分:15)
答案 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: