我有一台 Windows 电脑,它不断收集物理实验的数据。数据保存在一个文本文件中,每个新事件都附加在新行中。
每次我需要重新分析数据时,我都会通过 ssh 将文件传输到 ubuntu 计算机,一开始这样做没什么问题,但是当文件超过 1GB 时,一遍又一遍地传输整个文件就变得非常耗时,因为只有最后一行是不同的。
为了让您了解情况,实验运行大约 3 小时,传输每 GB 大约需要 5 分钟,文件通常最大为 3GB,文件行数约为数千万。
如果您有一个仅适用于 Linux 到 Linux 的传输的解决方案,我也很感兴趣,也许我可以用 cygwin 尝试一下。
答案1
rsync
就是您所需要的,并且它应该适用于 Windows。
rsync 以其增量传输算法而闻名,该算法通过仅发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量。(取自man rsync
)。
在 Windows 系统上安装 rsync,然后从 Linux 系统执行:
rsync --progress ip.of.windows.server:/path/to/file ./
它将仅传输已更改的部分。如果文件如您所说那样演变,则每次传输都会非常小且快速。
请注意,rsync 使用 ssh 连接,因此如果您已经设置并运行 ssh,那么 rsync 也应该可以正常工作。
答案2
如果每次只有文件的最后几行发生变化,那么一次又一次地传输整个文件并不是最好的解决方案。
有一些工具可以计算文件的差异并仅复制新的位,例如rsync
(使用增量编码,更多信息请见此处:http://en.wikipedia.org/wiki/Rsync)