从R的原子文件传输

从R的原子文件传输,r,R,我需要将文件从R内部推送到远程服务器。它需要是原子的(或接近原子的)。从概念上讲,我的想法是首先将其scp到tmp目录,然后将其移动到最终目的地。从R做这件事的好方法是什么?如果相关的话,我使用的是Linux系统。在R中使用system调用。类似于: system("scp foo.dat remote:/tmp/foo.dat.tmp") system("ssh remote mv /tmp/foo.dat.tmp /drop/foo.dat") 您可能需要一些额外的参数来ssh 您可能还希

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

在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的两端都是最简单的


在尝试在R中使用
system
调用之前,您可能应该检查
scp
命令的返回状态,看看它是否成功完成。类似于:

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的两端都是最简单的


在尝试在R中使用
system
调用之前,您可能应该检查
scp
命令的返回状态,看看它是否成功完成。类似于:

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的两端都是最简单的


在尝试在R中使用
system
调用之前,您可能应该检查
scp
命令的返回状态,看看它是否成功完成。类似于:

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
命令的返回状态,看看它是否成功完成。您可以提供一个更具重现性的示例,或者更具体地说明您正在尝试执行的操作吗?例如,你所说的原子是什么意思?二进制数据?我怀疑“原子”在这里意味着文件神奇地出现在一个完整的地方,而不是在传输时逐渐出现。远程服务器不应看到半个文件。对吗?是的@Spacedman这就是我的意思。你能提供一个更具可复制性的例子,或者更具体地说明你正在尝试做什么吗?例如,你所说的原子是什么意思?二进制数据?我怀疑“原子”在这里意味着文件神奇地出现在一个完整的地方,而不是在传输时逐渐出现。远程服务器不应看到半个文件。对吗?是的@Spacedman这就是我的意思。你能提供一个更具可复制性的例子,或者更具体地说明你正在尝试做什么吗?例如,你所说的原子是什么意思?二进制数据?我怀疑“原子”在这里意味着文件神奇地出现在一个完整的地方,而不是在传输时逐渐出现。远程服务器不应看到半个文件。对吗?是的@Spacedman这就是我的意思。你能提供一个更具可复制性的例子,或者更具体地说明你正在尝试做什么吗?例如,你所说的原子是什么意思?二进制数据?我怀疑“原子”在这里意味着文件神奇地出现在一个完整的地方,而不是在传输时逐渐出现。远程服务器不应看到半个文件。对吗?是的,我就是这个意思。谢谢。我尝试了这个方法,它是有效的,除了在第二个命令仍在运行时提交给我的R shell的任何命令(从emacs或从Vim)都被R忽略,这是非常奇怪的行为。关于这一点,我可能会提交第二个stackoverflow问题,这个问题与ssh吃掉发送到R shell的后续命令有关。c、 谢谢。我尝试了这个方法,它是有效的,除了在第二个命令仍在运行时提交给我的R shell的任何命令(从emacs或从Vim)都被R忽略,这是非常奇怪的行为。关于这一点,我可能会提交第二个stackoverflow问题,这个问题与ssh吃掉发送到R shell的后续命令有关。c、 谢谢。我尝试了这个方法,它是有效的,除了在第二个命令仍在运行时提交给我的R shell的任何命令(从emacs或从Vim)都被R忽略,这是非常奇怪的行为。关于这一点,我可能会提交第二个stackoverflow问题,这个问题与ssh吃掉发送到R shell的后续命令有关。c、 谢谢。我尝试了这个方法,它是有效的,除了在第二个命令仍在运行时提交给我的R shell的任何命令(从emacs或从Vim)都被R忽略,这是非常奇怪的行为。关于这一点,我可能会提交第二个stackoverflow问题,这个问题与ssh吃掉发送到R shell的后续命令有关。c、 f。