![是否有允许“增量上传”的 FTP 或类似 FTP 的客户端 - 即仅上传文件已更改的部分?](https://linux22.com/image/1509644/%E6%98%AF%E5%90%A6%E6%9C%89%E5%85%81%E8%AE%B8%E2%80%9C%E5%A2%9E%E9%87%8F%E4%B8%8A%E4%BC%A0%E2%80%9D%E7%9A%84%20FTP%20%E6%88%96%E7%B1%BB%E4%BC%BC%20FTP%20%E7%9A%84%E5%AE%A2%E6%88%B7%E7%AB%AF%20-%20%E5%8D%B3%E4%BB%85%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%E5%B7%B2%E6%9B%B4%E6%94%B9%E7%9A%84%E9%83%A8%E5%88%86%EF%BC%9F.png)
我经常通过 FTP 对较大的文本文件进行小的修改(用于 Web 开发的 CSS 文件),而且由于我的网络连接非常慢,所以这是一个非常痛苦的过程。
即使我只更改文件的一个字符,我仍然必须坐下来等待相当长的时间,直到整个文件重新上传到服务器。
有什么方法可以在我的本地计算机上编辑远程托管的文件,当我保存文件时,仅上传文件发生变化的部分?
编辑:我认为我目前还不清楚如何使用 FTP 客户端。基本上,我使用 WinSCP 通过 SFTP 打开远程文件。WinSCP 将其保存到 tmp 文件夹,启动 Sublime Text,然后我开始编辑它。当我点击保存时,WinSCP 会自动重新上传文件。我实际上从未将文件永久保存在我的计算机上 - 一切都是通过 WinSCP 的临时文件夹完成的。这就是为什么我正在寻找一种可以以这种“打了就跑”的方式使用的解决方案。
先前的讨论
我以前在 ServerFault 上发布了这个问题有人建议使用 git 之类的工具,但是正如我所解释的:
使用 git 或类似的版本控制工具,每次保存文件时我都必须进行提交,对吗?即使可以自动完成(即,如果我有一个宏,可以在 Sublime Text 中按 Ctrl-S 保存文件并同时执行 git push),我每小时可能会对 CSS 文件进行 50-100 次微小编辑;我肯定会得到一个垃圾提交日志?此外,git 解决方案不灵活,因为它依赖于我正在编辑的任何文件都是 git 存储库的一部分。
到目前为止我能想到的唯一解决方案是使用 rsync 的某种破解过程,但即便如此,它也非常繁琐:
- 我将我需要的文件下载到我的电脑(通过 FTP/rsync/whatever)。
- 我在(例如) Sublime Text 中打开一个文件并开始进行编辑。
- 后台进程正在监控文件夹中的文件修改情况。当我保存文件时,该进程会立即触发从我的计算机到服务器的 rsync 操作,传输文件更改的部分。
但是,我需要手动设置或指定远程文件或目录路径,否则本地 rsync 脚本将不知道在哪里 rsync 文件,因此这种方法仍然非常不灵活。这种方法不允许我像 FTP 客户端那样立即浏览到随机文件、打开并保存它。
使用此方法也没有像上传进度条这样的可见反馈。
答案1
Vim 有一个名为 netrw 的内置插件,允许 Vim 编辑远程文件。Rsync 是它可以使用的协议之一:
:e rsync://user@hostname:port/path
:w rsync://user@hostname:port/path
当然,如果你可以通过 SSH 访问远程计算机,并且计算机上安装了 Vim,那么远程使用 Vim 可能更简单。在这种情况下,Nano、Emacs 和其他带有命令行界面的编辑器也是不错的选择。不过,根据你的连接状况,这可能不是一个好选择。
尽管如此,
对远程托管的文件进行数百处微小更改,并且必须“实时”和“就地”编辑
如果没有像 git 提供的可靠的回滚系统,那么当您犯下不可避免的错误时,您和您的组织就只能自求痛苦,而这些错误很可能不会被注意到,直到您忘记自己到底做了什么。
答案2
无可比拟是一个可以比较和合并文件夹和文件的 diff 工具;它还支持 FTP 服务器,可以像处理本地文件夹一样处理。它是专有的,一次安装的终身许可证费用为标准版(带 FTP)30 美元或专业版(带 SFTP)60 美元。它可在 Windows、Mac OS 和 Linux 上运行。我个人在家用电脑上开发我的网站,并在满意时将更改上传到我的 Web 服务器。我使用 Beyond Compare 手动完成更改,但这也可以自动化。您可以尝试一下,看看它是否只上传完整的文件或更改块;我对此不确定。