关闭 SSH 连接后完成 rsync 作业

关闭 SSH 连接后完成 rsync 作业

我正在使用 .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 &

相关内容