如何可靠地将本地源文件与远程同步?

如何可靠地将本地源文件与远程同步?

我在运行 MAMP 和 BBEdit 的 Mac 上进行本地开发。我目前使用 Transmit 通过 (S)FTP 同步文件。我喜欢这款软件,它有一个“同步”功能,可以根据文件大小或修改日期将本地文件与远程文件进行比较,但我发现此功能在这两种设置下都不可靠。我的直觉是,这是由于:

  1. OSX Mt. Lion 以 KB 为单位列出文件大小,而 Linux 服务器则使用 KiB(更多信息这里
  2. 我正在使用 git 进行版本控制,我认为当我在分支之间切换时修改日期不同步。

底线是,Transmit 似乎是用于开发人员较少的小型项目的完美工具,但对于我目前正在进行的项目(具有多个工作分支、频繁提交以及需要精确、系统地同步文件)来说,它似乎无法胜任这项工作。

我也使用过值得信赖的 Filezilla,它似乎没有同样的可靠性问题,但也没有真正的“同步”功能。它会显示差异,但您需要手动浏览目录并找到所有差异(就像复活节寻蛋一样)。这对我来说不切实际,因为更改通常涉及不同目录中的许多文件。

我的问题:正确的做法是什么?

我在这里看到 BBEdit 有一个 FTP 浏览器和类似 diff 的命令行工具,但我没有找到有关如何将其与远程文件一起使用的任何文档。

答案1

从我的角度来看,您要找的是“rsync”。最好的开始方式是手册页: http://linux.die.net/man/1/rsync

从技术上讲,该工具的使用没有固定的工作流程。它有许多超出大多数人想象的模式。例如,您可以让它像 OSX 的时间机器一样运行: http://blog.interlinked.org/tutorials/rsync_time_machine.html 您基本上必须指定您的工作流程并找到适当的选项/开关集以使 rsync 执行您喜欢的操作。

事实上,如果你不喜欢使用命令行,你可以找到各种图形前端。一个很好的例子是: http://www.opbyte.it/grsync/

答案2

使用 rsync。如果您觉得文档难以理解,请尝试 GUI 包装器 grsync。rsync 专门用于同步。它有许多选项,几乎肯定能满足您的需求,据我所知,几乎所有选项都可以通过 grsync 访问。它也是一个相当不错的工具,可用于制作涉及目录树的任何类型的远程文件复制,无论您是否同步 - 比 scp 甚至 ftp 更快,与 tar|ssh 相当,但不那么复杂。

相关内容