有没有办法暂停已经运行的 scp 进程?

有没有办法暂停已经运行的 scp 进程?

我正在使用 复制一个大文件scp,然后意识到目标可能没有足够的空间来完成复制。有没有办法可以暂停复制(可能要暂停几个小时),然后稍后再恢复?此外,如果复制失败(no space left on device),我是否可以在清理一些空间后恢复复制?

(请注意,scp已在运行;使用其他程序等解决方案将不起作用。)

答案1

您可以使用 SIGSTOP 暂停进程,然后使用 SIGCONT 继续进程。(请参阅 了解kill -l信号列表并使用ps来获取进程 ID)。

但是,这很可能行不通。例如,如果在源和目标之间有一个路由器,它会注意到并“清理”死连接。大多数 SOHO 路由器似乎都这样做,因为清理连接意味着更少的内存使用。(因此他们可以构建更便宜的路由器)。

如果发生这种情况,您将需要使用 scp 再次复制,或者使用 rsync。

Rsync 的优点是它会比较已经存在的文件,而不会不必要地复制数据。在你的情况下,它应该检测到已经存在的、部分上传的文件,并且只上传文件的剩余部分

语法如下rsync -v -e ssh /home/my_file [email protected]:~

-v 表示详细。-e“ssh 选项”指定 ssh 作为远程 shell。

如果您的数据是可压缩的,那么您可能需要添加-z以压缩数据。

相关内容