我正在使用 复制一个大文件scp,并意识到目标可能没有足够的空间来完成。有没有办法暂停它,可能是几个小时,然后再继续?此外,如果它失败 ( no space left on device),我是否能够在清理一些空间后恢复它?
(请注意,scp它已经在运行;使用不同程序等解决方案将不起作用。)
你可以用 SIGSTOP 暂停一个进程,然后用 SIGCONT 继续它。(有关kill -l信号列表并用于ps获取进程 ID,请参阅 参考资料)。
但是,这很可能不起作用。例如,如果您在源和目标之间有一个路由器,它会注意到并“清除”死连接。大多数 SOHO 路由器似乎都这样做,因为清理连接意味着更少的内存使用。(因此他们可以构建更便宜的路由器)。
如果发生这种情况,您将需要使用 scp 再次复制,或者您可以使用 rsync。
Rsync 的优点是它比较已经存在的文件并且不会不必要地复制数据。在您的情况下,它应该检测一个已经存在的部分上传的文件,并且只上传文件的其余部分
语法是 rsync -v -e ssh /home/my_file username@destination.host.tld:~
-v 表示详细。-e "ssh options" 指定 ssh 作为远程 shell。
如果您的数据是可压缩的,那么您可能需要添加-z以压缩数据。