我正在使用 .NET 将大量文件从一台计算机传输到另一台计算机rsync
。我通过 SSH 连接到源计算机并执行如下命令来完成此操作:
sudo rsync ssh --rsync-path="sudo rsync" source_dir [email protected]:dest_dir
。
即使我nohup
在此命令之前添加,每当我关闭进行 SSH 的终端窗口时,连接都会关闭。
如何才能在关闭 SSH 连接时继续进行文件传输?
答案1
之所以对nohup
您没有帮助是因为该程序使用标准 IO 文件。
这是摘录自维基页面对于 nohup:
注 - Nohupping 后台作业通常用于避免在从远程 SSH 会话注销时终止它们。在这种情况下经常出现的另一个问题是 ssh 拒绝注销(“挂起”),因为它拒绝丢失后台作业的任何数据。这个问题也可以通过重定向所有三个 I/O 流来解决:
nohup ./myprogram > foo.out 2> foo.err < /dev/null &
另请注意,关闭 SSH 会话并不总是向相关进程发送 HUP 信号。其中,这取决于是否分配了伪终端。
你可以用screen
它。
使用以下命令创建屏幕会话:然后,使用+screen -S rsync
分离屏幕CTRLA d
您可以断开连接SSH
答案2
该屏幕命令很好,但不能完全满足我的需要。
这效果好多了:
nohup rsync -va --delete ###.###.###.###:/var/www/sites/ /var/www/sites < /dev/null &