【问题标题】:Atomic file transfer from R来自 R 的原子文件传输
【发布时间】:2015-02-19 17:03:18
【问题描述】:

我需要从 R 中将文件推送到远程服务器。它需要是原子的(或接近原子的)。从概念上讲,我的想法是首先将其 scp 到 tmp 目录,然后将其移动到最终目的地。从 R 中执行此操作的好方法是什么?如果相关的话,我在 Linux 系统上。

【问题讨论】:

  • 您能否提供一个更可重复的示例或更具体地说明您要做什么?例如,你所说的原子是什么意思?二进制数据?
  • 我怀疑这里的“原子”意味着文件神奇地出现在一个完整的地方,而不是在传输时逐渐出现。远程服务器不应该看到半个文件。对吗?
  • 是的@Spacedman 这就是我的意思。

标签: r


【解决方案1】:

在 R 中使用 system 调用。类似:

system("scp foo.dat remote:/tmp/foo.dat.tmp")
system("ssh remote mv /tmp/foo.dat.tmp /drop/foo.dat")

你可能需要一些额外的参数给ssh

您可能还想为临时文件名生成一个随机数。

当然,这需要 scp/ssh 服务器和服务器上的 mv,所以在两端使用 GNU/Linux 最简单。

在尝试mv 之前,您可能应该检查scp 命令的返回状态,看看它是否成功完成。

【讨论】:

  • 谢谢。我试过这个,它工作,除了我提交给我的 R shell(来自 emacs 或来自 Vim)的任何命令,而第二个命令仍在运行时被 R 忽略,这真的很奇怪。我可能会就此提交第二个 stackoverflow 问题。
  • 我遇到的问题与 ssh 吃随后发送到 R shell 的命令有关。参考文献stackoverflow.com/questions/28838273/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
相关资源
最近更新 更多