Synchronization 如何使用ssh将代码同步到远程计算机?
对于我正在学习的当前课程,我们使用远程计算机运行代码 我正在我的MacBook上本地编码,我正在寻找一种好方法,使我的本地代码在集群上保持最新 我当时的做法是打开一个终端来运行SCP来复制目录,另一个终端通过SSH连接到集群中来生成和运行我的代码 这对我来说似乎不太理想。有没有一种方法可以在修改文件时自动将其发送到集群Synchronization 如何使用ssh将代码同步到远程计算机?,synchronization,development-environment,Synchronization,Development Environment,对于我正在学习的当前课程,我们使用远程计算机运行代码 我正在我的MacBook上本地编码,我正在寻找一种好方法,使我的本地代码在集群上保持最新 我当时的做法是打开一个终端来运行SCP来复制目录,另一个终端通过SSH连接到集群中来生成和运行我的代码 这对我来说似乎不太理想。有没有一种方法可以在修改文件时自动将其发送到集群 还是我只能用一行命令来移动所有内容?除了分布式版本控制之外,最好的选择是通过ssh使用rsync。我通过在每台机器上执行以下操作来保持两台机器的同步: rsync -urltv
还是我只能用一行命令来移动所有内容?除了分布式版本控制之外,最好的选择是通过ssh使用rsync。我通过在每台机器上执行以下操作来保持两台机器的同步:
rsync -urltv --delete -e ssh /src.dir user@othermachine:/src.dir
你提到使用MacBook-rsync是在MacOSX上的。据我所知,它不需要额外安装。rsync的美妙之处在于它寻找修改,只复制修改过的文件。它不会像分布式版本控制系统那样合并同时修改,但如果你像我一样,在笔记本电脑上做一些工作,然后在桌面上做一些工作,rsync是切换模式时将所有更改的文件(仅更改的文件)从一个发送到另一个的最佳方式
注意:此处使用的rsync选项有:
,--更新接收器上更新的跳过文件-u
,--递归到目录中-r
,--链接将符号链接复制为符号链接-l
,--时间保留修改时间-t
,--冗长增加冗长-v
从dest dirs中删除无关文件,在--delete
-e
是允许您指定远程shell的选项,在本例中,ssh如果可以使用,这可能是最好的方法
是否可以使用(保险丝)安装远程文件夹?您可以直接编辑文件,也可以使用rsync或任何文件夹到文件夹的同步工具。我知道这不是您知道的答案,但您可以设置SVN或CVS服务器,这将非常简单
否则我会选择rsync。可能不是您想要的,但您应该看看像git这样的DSCM:
比rsync更好的是,它将允许您在任意一端进行更改,并将检测和帮助解决任何冲突。它通过ssh工作。rsync是否仅在我的comp上运行?我只是想知道我是否可以访问集群上的rsync。不,在ssh隧道的两端都需要rsync。这是很常见的,所以我肯定会吸它看看。我回家后会检查一下。还有一个问题,rsync是否寻找修改?是的,rsync进行增量备份。值得一提的是,如果您不想更新已知未更改的旧文件,您应该使用
--忽略现有的
标志并放弃-u
,并且它只能安装在两台机器中的一台机器上?来自unison-doc教程
:“服务器机器上安装的unison版本必须与客户端机器上安装的unison版本相同。”因此,似乎必须在两台计算机上都安装unison
。使用源代码管理进行文件共享是“容易”的,正如您所建议的,但也是“讨厌”的。这种方法在几个场景中可能特别有问题。如果文件已受源代码管理,则使用现有的SCM(源代码管理系统)将“弄脏”历史记录。或者,无论是同一SCM的第二个实例还是不同SCM的第二个实例,尝试使辅助SCM工作都会有很大的问题。我认为即使使用了源分支,在现有的SCM上也没有干净的方法。就我个人而言,我会尽量避免使用SCM,但还是坚持使用rsync之类的。使用源代码管理进行文件共享是“讨厌的”。(请看我对邪恶博士回答的评论。)