如何实现主动的数据同步

2020-04-03 22:33:25 +08:00
 allenloong
有一些计算会在远程的机器上完成,会生成比较大的数据量。计算完成后,需要取回到本地。

希望能够实现,在计算完成后,本地机器主动去取回数据。

目前的方案:使用 rsync 去每小时同步远程的目录,同步前 kill 掉还在进行的 rsync 。
存在的限制:
1.远程机器上无法安装新工具,只有普通的权限,不能长时间运行程序 /脚本。
2.远程的数据生成事件不定时,不能提前预测。
3.因为数据比较大,传输时间通常要好几个小时。

想请教大家有没有好的解决方案,谢谢。
1443 次点击
所在节点    问与答
11 条回复
noparking188
2020-04-04 07:16:46 +08:00
本地机器跑个后台进程
noparking188
2020-04-04 07:17:52 +08:00
不断请求询问远程机器计算任务跑完了没有
noparking188
2020-04-04 07:22:12 +08:00
不好意思仔细看第一条,那可以本地周期性地 ssh 远程执行 shell 脚本,这个脚本监控计算任务是否完成,我不清楚这种计算是啥,可以看查看进程状态或者观察是否有数据文件生成
noparking188
2020-04-04 07:22:51 +08:00
@noparking188 没仔细
ackoly
2020-04-04 09:22:01 +08:00
1.远程机器上无法安装新工具,只有普通的权限,不能长时间运行程序 /脚本
为啥不能长时间运行?是指连接会断吗? nohup 用过没。
这应该用一个常驻的 rsync 就能搞掂
WispZhan
2020-04-04 10:06:55 +08:00
自己写 agent+hook
allenloong
2020-04-04 10:15:02 +08:00
@noparking188 #3 现在就是这样做的 rsync 直接去看一个目录,有东西就同步。但是因为传的时间比较长,可能有新的文件了,上一次的还没传完。或许我该用 ignore existing ?
allenloong
2020-04-04 10:17:32 +08:00
@ackoly #5 rsync 是没问题的,或许我该使用 ignore existing 这样每个小时执行一次脚本,也只会同步新的,进行中的也不用 kill 掉了。
allenloong
2020-04-04 10:18:50 +08:00
@WispZhan #6 emmmm 我去看看 不是很了解。
also24
2020-04-04 10:21:36 +08:00
无外乎三种方式:轮询 / 长连接 / 回调

以及封装好的 MQ
ackoly
2020-04-04 23:55:35 +08:00
@allenloong rsync 有服务模式,可以常驻,不清楚是否需要高权,你可以查下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/659185

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX