使用 SCP 和 nohup 在服务器之间传输大型文件夹

使用 SCP 和 nohup 在服务器之间传输大型文件夹

我想将一个大约 50GB 的文件夹从一台服务器复制到另一台服务器。这显然需要相当长的时间,所以我希望能够“在后台”执行。使用标准 SCP 命令需要我保持控制台打开。我阅读了有关 的信息nohup,这似乎应该可以解决问题,但我很难让它工作。即使这样似乎也需要控制台保持打开状态 - 在输入命令后,程序nohup保持打开状态,如果我按CTRL+C退出,则传输将停止。我误解nohup了什么?或者我还能如何实现这一点?

答案1

scp我认为从会话开始会更容易screen,并且一旦从中复制分离screen,您可以随时返回该屏幕会话并检查其进展情况。

screen
scp foo bar

Ctrla然后d从屏幕分离

然后重新连接到屏幕:

screen -x

答案2

该名称nohup指的是HUP当终端连接到服务器的(电话)线路挂断时传统上发送给进程的信号。nohup阻止发送该信号,即使现在“挂断”只是意味着“关闭终端窗口”。

tl;dr 您只想关闭终端窗口(或终止您这边的 ssh 连接),而不是定期退出服务器。nohup即使终端连接以某种方式中断,也会让您的进程保持运行。

答案3

嗯,有几个问题:

  1. 如果您想在后台运行该命令,则需要&在命令后附加。例如nohup scp file server:path/ &。它将在后台运行,如果您关闭控制台,它仍会传输文件。

  2. 使用sftp而不是scp。它能提供更好的性能结果(尤其是对于如此大的文件)。SCP 非常慢。甚至sftp支持批处理模式:sftp -b <(echo "cd path"; echo "put file") server &

相关内容